如何查看死信消息

时间:2016-08-05 08:10:53

标签: azure azureservicebus azure-servicebus-queues dead-letter

很难找到一些关于将所有消息都放入deadletter队列的好文档,并且可以看一看它们。我有一个Azure服务总线队列。我能找到的一切都是服务总线主题......有人可以帮我快速指导吗?

4 个答案:

答案 0 :(得分:3)

死信队列是一个辅助子队列,病毒消息将被移动到该子队列中。 在天蓝色服务总线队列的情况下,DLQ的标准路径是queuePath / $ DeadLetterQueue。 所以你需要有另一个队列客户端来读取这个DLQ。

你会在.net客户端做类似的事情。

string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
QueueClient Client = QueueClient.CreateFromConnectionString(connectionString, "QueueName");
// do whatever regular queue reading activities

// this is for dead letter queue
    QueueClient deadLetterClient = QueueClient.CreateFromConnectionString(connectionString, QueueClient.FormatDeadLetterPath(Client.Path), ReceiveMode.ReceiveAndDelete);
            BrokeredMessage receivedDeadLetterMessage;

            while ((receivedDeadLetterMessage = deadLetterClient.Receive(TimeSpan.FromSeconds(10))) != null)
            {
                Console.WriteLine(receivedDeadLetterMessage);
            }

答案 1 :(得分:2)

Azure门户现在提供了一个 service bus explorer (preview) 工具,用于对队列/主题及其失效的对象执行基本操作(例如发送,接收,查看)信实体,直接来自门户网站本身。查看有关使用此工具的详细说明的此链接- azure-service-bus-messaging-explorerservice-bus-explorer-Azure-portal

要使用更多高级功能,例如导入/导出功能或测试主题,队列,订阅,中继服务,通知中心和事件中心的功能,请尝试使用社区拥有的运营支持系统(OSS)工具{{3 }}。 service bus explorer 与今天一样,您只能在Azure门户上的 服务总线资源管理器 的预览版中浏览32条消息。因此,如果您有更多消息要处理,那么您可能希望选择上述独立社区拥有的OSS工具。

答案 2 :(得分:0)

string connectionString = ConfigurationManager.AppSettings["connectionString"];    
string queueName = ConfigurationManager.AppSettings["queueName"];    
ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(connectionString);    
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(builder.ToString());    
var client = QueueClient.CreateFromConnectionString(connectionString, queueName);    
string deadLetterQueuePath = QueueClient.FormatDeadLetterPath(queueName);    
QueueClient deadletterQueueClient = factory.CreateQueueClient(deadLetterQueuePath);    
while (true)    
{    
       BrokeredMessage brokeredMessage = deadletterQueueClient.Receive();    
       // Your Logic    
}

答案 3 :(得分:0)

以下是如何使用Peek获取死信队列中所有消息列表的示例:

public async Task<IEnumerable<BrokeredMessage>> GetDeadLetterMessagesAsync(string connectionString,
    string queueName)
{
    var queue = QueueClient.CreateFromConnectionString(connectionString, QueueClient.FormatDeadLetterPath(queueName));
    var messageList = new List<BrokeredMessage>();
    BrokeredMessage message;
    do
    {
        message = await queue.PeekAsync();
        if (message != null)
        {
            messageList.Add(message);
        }
    } while (message != null);
    return messageList;
}