首页 > 解决方案 > 如何从服务总线死信队列中读取消息?

问题描述

如何从服务总线死信队列中读取消息?我能够读取消息 ID 和消息的序列号,但我需要实际消息。有人可以帮我弄这个吗?是否可以阅读实际消息?

标签: azurequeueservicebusdead-letter

解决方案


在读取消息表单死信队列之前,您应该检查失败的原因是什么?如果某些服务不可用,则创建 WebJob 并尝试以下代码并处理消息。

public void GetDeadLetterMessagesAsync(string connectionString, string queueName)
    {
        var queueClient = QueueClient.CreateFromConnectionString(connectionString, QueueClient.FormatDeadLetterPath(queueName));
        while (true)
        {
            BrokeredMessage bmessgage = queueClient.Receive();
            if (bmessgage != null)
            {
                string msg = new StreamReader(bmessgage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
                //Custom business logic to prcess your message
                bmessgage.Complete();
            }
            else
            {
                break;
            }
        }
    }

如果消息有问题,那么您应该阅读并在 UI 上显示消息,以便后台团队可以更正消息,否则它将再次失败。


推荐阅读