我遵循这里列出的步骤,但对于python代码:https://docs.microsoft.com/en-us/azure/azure-functions/functions-identity-based-connections-tutorial-2
目标是创建一个简单的(hello world)功能应用程序,该应用程序由Azure Service Bus消息队列使用基于身份的连接触发。当ASB通过连接字符串引用时,Function app可以正常工作,但在尝试通过Function app的托管服务标识(使用了特定的配置模式_fullyQualifiedNamespace)进行连接时,会出现此错误。MSI已被授予ASB上的角色(Azure服务总线数据接收器)。
微软。蔚蓝色的WebJobs。ServiceBus:Microsoft Azure WebJobs SDK ServiceBus连接字符串“ServiceBusConnection__fullyQualifiedNamespace”缺失或为空
功能代码(自动生成)
import logging
import azure.functions as func
def main(msg: func.ServiceBusMessage):
logging.info('Python ServiceBus queue trigger processed message: %s',
msg.get_body().decode('utf-8'))
作用json(基于ms文档修改的连接值)
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "msg",
"type": "serviceBusTrigger",
"direction": "in",
"queueName": "erpdemoqueue",
"connection": "ServiceBusConnection"
}
]
}
主办json(根据ms文档修改版本)
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
要使用托管标识,需要添加一个设置来标识服务总线实例的完全限定命名空间。
例如,在你的本地。设置。json
本地开发文件:
{
"Values": {
"<connection_name>__fullyQualifiedNamespace": "<service_bus_namespace>.servicebus.windows.net"
}
}
或者在部署到Azure时,在功能的应用程序设置中:
<connection_name>__fullyQualifiedNamespace=<service_bus_namespace>.servicebus.windows.net
这在您提到的教程中只是简单地提到过。Microsoft. Azure. WebJobs. Express. ServiceBus
留档确实在托管标识身份验证部分更好地介绍了这一点。
我在Azure中创建了一个ServiceBus命名空间,以及一个主题和一个订阅。我还有一个简单的Azure version 1函数,可在ServiceBus中的接收主题上触发,如下所示: 当我通过使用主题的共享访问策略在函数应用程序设置中定义连接字符串时,该函数会很好地触发ServiceBus中的主题,如下所示: 现在,我想使用托管服务标识(MSI)来访问服务总线,而不是共享访问密钥。根据这个(h
一旦部署到云,我无法从Azure网站访问Azure服务总线队列。在localhost上运行时,如果工作正常,我可以向队列发送消息,但如果我部署应用程序,在远程服务器上创建QueueClient时会出现异常: “套接字连接被中止,因为对套接字的异步发送未在分配的超时00:00:59.4820817内完成。分配给此操作的时间可能是更长超时的一部分。” 我正在使用QueueClient。CreateFr
我目前正在评估使用一个服务总线和azure函数来触发一些需要通过下游api调用来完成的工作。这都是相当标准的,只是我没有很好地处理当下游系统过载和/或返回header到trottle时会发生什么(即每分钟最大调用数/等)。对于队列触发器的强制节流,我们似乎没有任何动态控制。 我知道我们可以手动设置最大并发,但这并不一定解决问题,因为我们无法控制下游系统,需要考虑它随时可能脱机或变慢。 假设消费计划
我的出发点是一个HTTP触发的Azure函数。它从请求正文中收集一些JSON,并将该消息传递给Azure服务总线。 我在这里一定遗漏了一些东西(我以前在RabbitMQ中使用过控制台应用程序),但是我如何从HTTP触发的Azure函数向服务总线发布消息。 我找到了几个关于配置function.json的参考资料(在Visual Studio中就是-im构建)。 **更新**仍然无法使其工作。得到了
在.NET core 2.0中使用创建时,我遇到了一个问题。 在体系结构中,当在用于创建用户的队列中创建新消息时,服务必须接收该消息并根据其中的信息在数据库中创建用户。 在Visual Studio2017中,我在下创建了一个新项目。 这种的正确实现是什么?在GitHub上有什么例子吗?提前道谢。