从 Azure 函数将消息写入 Azure 服务总线队列

Posted

技术标签:

【中文标题】从 Azure 函数将消息写入 Azure 服务总线队列【英文标题】:Writing message to Azure Service Bus queue from Azure function 【发布时间】:2019-01-23 14:45:08 【问题描述】:

我正在尝试从 azure 函数将消息添加到 azure 消息队列。为此,我正在关注这篇文章,它让我添加了对 Microsoft.Azure.ServiceBus 的引用。

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues

尝试添加此引用时,Visual Studio 2017 中的 Azure 函数项目抱怨 Newtonsoft.Json (=9.0.1) 相对于 Microsoft.NET.Sdk.Functions 引用的受限版本。

检测到 Newtonsoft.Json 的版本冲突。安装/参考 Newtonsoft.Json 10.0.1 直接到project IHA.Functions来解决 这个问题。 IHA.Functions -> Microsoft.Azure.ServiceBus 3.1.0 -> System.IdentityModel.Tokens.Jwt 5.2.2 -> Newtonsoft.Json (>= 10.0.1) IHA.Functions -> Microsoft.NET.Sdk.Functions 1.0.14 -> Newtonsoft.Json (= 9.0.1)。 IHA.Functions C:\TFS\IHA\Misc\IHA.CSL\IH​​A.Functions\IHA.Functions.csproj 1

据我了解,Microsoft.Azure.ServiceBus 需要 Newtonsoft.Json 10.0.1。如果我删除9.0版本并添加10.0版本,我可以成功添加Microsoft.Azure.ServiceBus包,但是Azure Functions项目抱怨Microsoft.NET.Sdk.Functions需要Newtonsoft 9.0。

基于这些理解,我似乎无法从 Azure 函数写入 Azure 消息队列。这是正确的还是我做错了什么?

【问题讨论】:

【参考方案1】:

Azure Functions 以扩展的形式明确支持服务总线。

您需要安装扩展程序,请参阅Azure Service Bus bindings for Azure Functions。请注意您使用的是哪个 Function App 版本:完整的 .NET Framework 1.x,或 .NET Standard 的 beta 2.x,并遵循相应的指导。

然后,您将定义并写入 output binding,而不是直接使用 Service Bus SDK。

【讨论】:

谢谢!效果很好,我编辑了标题。感谢您的帮助! python sdk 是否支持服务总线的输出绑定?已经找了一段时间了,在这上面找不到任何东西 值得一个单独的问题来给出更大的答案,但是yes

以上是关于从 Azure 函数将消息写入 Azure 服务总线队列的主要内容,如果未能解决你的问题,请参考以下文章

函数应用无法从 Azure 服务总线获取消息

如何从 azure 函数应用程序将文件发送到 azure 存储

如何通过azure设备配置服务从azure功能向iot设备发送自定义错误消息?

失败的消息不会从 Azure 服务总线触发函数移动到 DLQ

从 azure 数据工厂调用 azure 函数端点时出错

Azure 数据工厂问题将数据从本地 sql Server 写入 Azure SQL 数据库