首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure函数v2 BrokeredMessage作为ServiceBus的输入

Azure函数v2 BrokeredMessage作为ServiceBus的输入
EN

Stack Overflow用户
提问于 2018-10-04 15:35:27
回答 3查看 2.9K关注 0票数 1

我遵循的是一个以v1函数为目标的示例,以及我希望从其中得到的东西--我还无法在v2中进行复制。

我希望BrokeredMessage在Azure函数的签名中。

代码语言:javascript
复制
public static async Task WhatIsTheTime(
            [ServiceBusTrigger(queueName: QueueName, Connection = ConnectionStringKey)]
            BrokeredMessage message, 
            ILogger log)
{
     var myObj = message.GetBody<MyType>();
     // whatever
}

主要是因为它包含了很多方便的元数据,而且每次我决定需要不同的东西时,我都会更改签名。同样,正如上面的例子所示,很容易得到身体。

然而,似乎无论什么开箱即用的设置,我都对这个想法非常愤怒。它想让我做的是:

代码语言:javascript
复制
    public static async Task WhatIsTheTime(
            [ServiceBusTrigger(queueName: QueueName, Connection = ConnectionStringKey)]
            MyType myObj, 
            ILogger log)
{
    // whatever
}

为我迈出第一步。

如果我这样做,一切都是幸福的,我们都可以回家。但是我不想要这个,我宁愿要完整的BrokeredMessage。

无论我如何尝试打包主体的内容,在代码执行之前,它都不幸地失败了,给了我许多不同的错误(取决于我如何打包它),但很明显,这个错误:

代码语言:javascript
复制
Exception while executing function: Exception binding parameter Expecting element 'BrokeredMessage'   

它试图将BrokeredMessage的主体反序列化为BrokeredMessage!

怎么回事?我读过一篇文章,内容是在签名中加入BrokeredMessage使这件事变得很容易。是缺少配置选项还是smth?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-04 15:41:54

Azure函数v2不再使用BrokeredMessage,而是使用Microsoft.Azure.ServiceBus.Message

票数 3
EN

Stack Overflow用户

发布于 2018-10-05 05:04:22

这里是Azure函数服务总线触发器文档中的信息,表示Azure函数V2中的服务总线消息支持Meessage而不是BrokeredMessage

票数 3
EN

Stack Overflow用户

发布于 2018-10-04 22:16:28

这与破损的导线兼容性问题有关。如果您的原始代码正在使用接受对象而不是流的构造函数构造BrokeredMessage,这将导致新的.NET标准客户端失败。除非使用扩展方法来检索身体,否则我认为Azure函数不会这样做。

如果您有一个更新和重新部署您的发件人/发布者的选项,您可以通过发送一个带有字节的MemoryStream来更改消息的构造方式,以便该函数能够处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52650571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档