Функция Azure ServiceBusTrigger несколько раз вызывает одно и то же сообщение в течение миллисекунд без первого завершения - PullRequest
0 голосов
/ 08 июня 2018

Почему serviceBus вызывает одно и то же сообщение несколько раз?Те же триггеры выполняются одним и тем же сообщением на служебной шине:

[FunctionName("ProcessOrderFromServiceBusQueue")]
        public static void RunQueueMessages(
            [ServiceBusTrigger("orderqueue", Connection = "ServiceBusConnectionString")]
            string myQueueItem,
            int deliveryCount,
            DateTime enqueuedTimeUtc,
            string messageId,
            long sequenceNumber,
            TraceWriter log, ExecutionContext context)
        {
            log.Info($"C# ServiceBus Queue trigger function processed message: {myQueueItem}");            

            var config = new ConfigurationBuilder()
                                .SetBasePath(context.FunctionAppDirectory)
                                .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                                .AddEnvironmentVariables()
                                .Build();

            //var conn = config["ServiceBusConnectionString"];
            //var queueName = config["QueueName"];
            //var queueClient = new QueueClient(conn, queueName);
            //queueClient.CompleteAsync()
            log.Info($"Received Order: OrderId:{messageId} SequenceNumber:{sequenceNumber} Body:{myQueueItem}");


            // Deserialize the message body
            var order = JsonConvert.DeserializeObject<Order>(myQueueItem);

            // Process the order
            ProcessOrder(order, log, config);

            log.Info($"C# ServiceBus queue trigger function processed message: {messageId}");
        }

1 Ответ

0 голосов
/ 08 июня 2018

Скорее всего, тело вашей функции выдает исключение во время обработки сообщения.Функция App прерывает свою обработку, сообщение возвращается в очередь и сразу же отправляется снова, просто для повторного сбоя и т. Д.

В конце концов, оно достигает Max Delivery Count и запоминается в очереди Dead Letter.

Не могли бы вы проверить мою гипотезу?Например, напечатайте deliveryCount и проверьте, что находится в DLQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...