每当将项目添加到 Azure 服务总线队列时调用 webapi

Call a webapi whenever an item is added to an Azure Service Bus queue

有没有办法在将消息添加到 Azure Servicebus 队列时调用 .netcore web api 方法?我想在没有任何基于定时器的轮询的情况下实现这一点。

我可以像这样手动调用 api 端点来处理队列:

[HttpGet]
        public async Task<IActionResult> ProcessQue()
        {
            List<string> reList = new List<string>();
            try
            {
                // Register a OnMessage callback
                queueClient.RegisterMessageHandler(
                    async (message, token) =>
                    {
                        // Process the message
                        reList.Add($"Received message: SequenceNumber:{message.SequenceNumber} Body:{message.GetBody<string>()}");

                        // Complete the message so that it is not received again.
                        // This can be done only if the queueClient is opened in ReceiveMode.PeekLock mode.
                        await queueClient.CompleteAsync(message.LockToken);
                    },
                    new RegisterHandlerOptions() {MaxConcurrentCalls = 1, AutoComplete = false});
            }
            catch (Exception exception)
            {
                Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
            }

            return Ok(reList);
        }

我正在寻找一种方法,当消息添加到队列时该方法会自动触发。 Azure 函数可能是执行此操作的正确方法,但我无法将 azure 函数连接到服务总线队列。

任何建议、忠告、口袋棉绒,任何东西都非常感谢。

您可以使用 Azure Functions 调用网络 api。您需要将 Azure 服务总线队列设置为绑定。您可以获得有关如何使用 Azure Functions Service Bus bindings on MSDN.

的更多信息