我有模拟的 azure web 作业,它会定期推送 BrokeredMessage
到服务总线主题,就像这样
public void Simulate(
[TimerTrigger("0 */30 * * * *", RunOnStartup = true)]
TimerInfo timerInfo,
[ServiceBus("%topic%")]
out BrokeredMessage message)
{
message = new BrokeredMessage(
new AwesomeContract()
{
});
}
在azure function V2中,我尝试使用 Message
来使用它类。
public static void Integrate(
[ServiceBusTrigger(
"%topic%",
"%subscribtion%",
Connection = "ServiceBusConnection")] Message message,
TraceWriter log,
ExecutionContext context)
{
try
{
message.GetBody<AwesomeContract>();
}
}
关于GetBody<>
我收到DataContractSerialization
异常“反序列化类型 的对象时出错。输入源的格式不正确。”
是BrokeredMessage
和Message
在 azure 函数 v1 和 v2 中兼容吗?有什么建议吗?
最佳答案
BrokeredMessage
是来自 WindowsAzure.ServiceBus 库的消息对象,其中 Message
是来自 Microsoft.Azure.ServiceBus 库的对象。
尽管这些库之间的对象类型不同,但将消息正文作为 Stream
发送将有助于克服读取正文时的异常。
message = new BrokeredMessage(new MemoryStream(Encoding.UTF8.GetBytes([message_body]));
按照上面的方式构造消息会有所帮助。
关于c# - Azure Function v2 中的 BrokeredMessage 发送和消息使用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52419414/