【问题标题】:Auto forward message in Azure Function with Service Bus trigger使用服务总线触发器在 Azure 函数中自动转发消息
【发布时间】:2018-07-24 17:24:14
【问题描述】:

当我有自动转发队列时,Azure 功能无法启动:

函数 XXX 错误:函数“FunctionXXX”的侦听器无法启动。 Microsoft.ServiceBus:无法在启用了自动转发的实体上创建消息接收器。

            // Code to create the queue:
            var manager = NamespaceManager.CreateFromConnectionString("ConnectionString");
            manager.CreateQueue(new QueueDescription("myqueue_done")
            {
                RequiresSession = false
            });
            manager.CreateQueue(new QueueDescription("myqueue")
            {
                ForwardTo = "myqueue_done",
                RequiresSession = false
            });

这是我的天蓝色函数:

    [FunctionName("FunctionXXX")]
    public static void Run([ServiceBusTrigger("myqueue", Connection = "AzureSbConnectionString")]string myQueueItem, string messageId, string CorrelationId, TraceWriter log)
    {          

        log.Info($"Message id={messageId}, CorrelationId={CorrelationId}, was processed: {myQueueItem}");
    }

真的有限制吗?有没有更好的方法在这个 azure 函数沙盒方法中移动已处理的消息?

谢谢!

【问题讨论】:

标签: c# azure azure-functions azureservicebus


【解决方案1】:

这不是函数的限制,而是服务总线的工作方式。

启用自动转发后,服务总线会自动删除放置在第一个队列或订阅(源)中的消息,并将它们放入第二个队列或主题(目标)中。

如果您的消息被转发到另一个队列并从原始队列中删除,那么从同一队列创建手动接收器实际上没有意义。

【讨论】:

  • 谢谢!我不太了解这种行为。您是否知道是否有另一种方法可以自动将已处理的消息(“已完成”)放入另一个队列(无需使用 QueueClient 显式发送)?我需要这个,因为我想在客户的流程完成后向他们发送通知。
猜你喜欢
  • 2022-06-17
  • 2018-11-10
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多