【问题标题】:send a full brokered message in azure service bus from an azure function从 azure 函数在 azure 服务总线中发送完整的代理消息
【发布时间】:2017-12-01 01:30:57
【问题描述】:

我在 javascript 的 azure 函数中将完整的代理消息发送到 azure 服务总线输出时遇到问题。 该文档仅显示一个简单的正文消息 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus,没有任何 customerProperties。

到目前为止,我创建完整代理消息的尝试失败了,所有内容都进入正文。

var message = {'body' : 'test', 'customProperties' : {'fromsystem':'sap'}};
context.bindings.outputSbMsg = message;
context.done(null, res);

【问题讨论】:

    标签: azure azure-functions azureservicebus


    【解决方案1】:

    不幸的是,这是 node 的限制之一,因为我们丢失了一些 C# 中的类型信息。

    您可能会尝试使用自定义属性发送带有bodytest 的消息,但您也可能会尝试使用body 子属性将整个对象作为正文发送。 Azure Functions 假设您返回的所有内容都应该进入正文。

    作为一种解决方法,您可以:

    • 放弃输出绑定,直接使用ServiceBus sdk for node
    • 使用 C# 或 F# 与实际的 BrokeredMessage 类型代替节点
    • 让您的节点函数将结果放入队列中,然后触发 C# 函数来创建您想要的确切 BrokeredMessage

    【讨论】:

    • 悲伤 :) 集成非常简单。我可能会按照您的建议回退到 C#。我想到了第 4 种解决方案,其中包含中间队列 + 规则和 SET 属性,但它只适用于订阅者,而不适用于队列。
    • [C# 方法] 为了在我的 Run 方法原型中添加“out BrokeredMessage outputSbMsg”,我不得不从异步切换到同步。我不知道是否还有其他方法:/但它正在工作:)
    • 您可以使用 IAsyncCollector 类型。以下是您可以使用的其他一些类型:jhaleyfiles2016.blob.core.windows.net/public/…
    • 请在文档docs.microsoft.com/en-us/azure/azure-functions/… 中明确说明此限制。在我来到这里之前,我花了一些时间在谷歌上搜索、反复试验。
    • 为了能够在输出绑定中提供自定义属性,我们可以在 c# 中使用它吗? IAsyncCollector<BrokeredMessage>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2019-01-23
    • 1970-01-01
    • 2022-08-05
    • 2021-09-09
    • 2023-04-09
    相关资源
    最近更新 更多