我在azure中配置了服务总线队列,当发送消息时,它将触发azure功能。我想利用它,根据队列消息中存在的密钥,它应该自动触发不同的azure功能。
我尝试在下面的代码中实现这一点:
import azure.functions as func
import logging
import json
app = func.FunctionApp()
@app.service_bus_queue_trigger(arg_name="azservicebus", queue_name="queue-asb",
connection="azuretopicnamespace_SERVICEBUS")
def servicebus_queue_trigger(azservicebus: func.ServiceBusMessage):
message_body = azservicebus.get_body().decode('utf-8')
message_data = json.loads(message_body)
if message_data.get('key_val','') =='service_bus_queue':
print("Inside the if statment")
result = service_bus_queue(azservicebus)
print("Result",result)
else:
print("Inside the else statement")
servicebus_trigger(azservicebus)
@app.service_bus_queue_trigger(arg_name="azservicebus", queue_name="queue-asb",
connection="azuretopicnamespace_SERVICEBUS")
def service_bus_queue(azservicebus:func.ServiceBusMessage):
a = 1+2
print(a)
print("This is the first function will be triggered")
return a
@app.service_bus_queue_trigger(arg_name="azservicebus", queue_name="queue-asb",
connection="azuretopicnamespace_SERVICEBUS")
def servicebus_trigger(azservicebus: func.ServiceBusMessage):
print("This is the second function will be trigered")
我不确定这是否是正确的方法?
Azure 函数由队列或订阅调用,并且您无法根据有效负载触发不同的函数,因为函数始终绑定到单个实体。
根据您拥有的密钥数量,您可以使用扇出策略,将消息发布到主题并拥有订阅该主题并根据密钥过滤消息的订阅。这种方法需要满足以下条件。
这种方法对于少量的key来说是可行的。如果键的数量很大,或者本质上是动态的,您将需要采用不同的方法。