基于ServiceBus触发Azure函数并写回不工作(Python)

问题描述

我有一个Python Azure函数,它根据主题的消息触发,它独立工作得很好。然而,如果我随后尝试将消息也写入到不同的ServiceBus队列中,它将不起作用(因为在Azure函数中,如果将新消息发布到主题,甚至不会触发)。当我包含msg_out: func.Out[str]组件时,感觉触发器条件不满足。如有任何帮助,我们将不胜感激!

__init.py

import logging
import azure.functions as func

def main(msg: func.ServiceBusMessage, msg_out: func.Out[str]):
    # Log the Service Bus Message as plaintext

    # logging.info("Python ServiceBus topic trigger processed message.")
    logging.info("Changes are coming through!")
   
    msg_out.set("Send an email")

unction.json

{
  "scriptFile": "__init__.py",
  "entryPoint": "main",
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "publish-email",
      "subscriptionName": "validation-sub",
      "connection": "Test_SERVICEBUS"
    },
    {
      "type": "serviceBus",
      "direction": "out",
      "connection": "Test_SERVICEBUS",
      "name": "msg_out",
      "queueName": "email-test"
    }
  ]
}

Host.json

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[2.*, 3.0.0)"
  },
  "extensions": {
    "serviceBus": {
        "prefetchCount": 100,
        "messageHandlerOptions": {
            "autoComplete": true,
            "maxConcurrentCalls": 32,
            "maxAutoRenewDuration": "00:05:00"
        },
        "sessionHandlerOptions": {
            "autoComplete": false,
            "messageWaitTimeout": "00:00:30",
            "maxAutoRenewDuration": "00:55:00",
            "maxConcurrentSessions": 16
        }
    }
}
}

解决方案

我可以重现您的问题,这似乎是由以下错误引起的:

不允许使用属性essionHandlerOptions。

删除sessionHandlerOptions可以正常触发。

相关文章