繁体   English   中英

如何在死信中的 Azure 服务总线 java function 中设置自定义死信原因?

[英]How to set Custom deadletterreason in Azure service bus java function in deadletter?

我正在尝试创建 Azure 服务总线触发函数(java)。 当有任何异常时,将消息放入死信队列,死信原因为 MaxDeliveryCountExceeded。

@FunctionName("testFunction")
public void run(@ServiceBusQueueTrigger(name = "message", queueName = "testQueue", connection = "ConnectionString") String message,
            final ServiceBusExecutionContext context) {
        try{
            ..... some functionality
        }catch(Exception e){
        throw e;
    }
}

使用 java Azure function 服务总线触发器时有什么方法可以自定义死信原因和死信错误描述?

使用 java Azure function 服务总线触发器时有什么方法可以自定义死信原因和死信错误描述?

你可以试试下面的代码:

public List<DeadLetterQueueMessage> MonitorDeadLetterQueue(string TopicName)
{
        List<DeadLetterQueueMessage> messagesFromDeadLetterQueue = new List<DeadLetterQueueMessage>();
        ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(AzureBusEndPointReceiveConnectionString);
        MessagingFactory factory = MessagingFactory.CreateFromConnectionString(builder.ToString());
        MessageReceiver deadLetterClient = factory.CreateMessageReceiver(SubscriptionClient.FormatDeadLetterPath(TopicName, AzureBusSubscriptionName));
        bool queueStillHasMessages = true;
        while (queueStillHasMessages)
{
                BrokeredMessage msg = deadLetterClient.Receive();
                if (msg != null)
{
                     DeadLetterQueueMessage deadLetterQueueMessage = new DeadLetterQueueMessage
{
JSONPayload = new StreamReader(msg.GetBody<Stream>(), Encoding.UTF8).ReadToEnd(),
MessageId = msg.MessageId,
DeliveryCount = msg.DeliveryCount,
DeadLetterErrorDescription = msg.Properties[“DeadLetterErrorDescription“].ToString(),
DeadLetterReason = msg.Properties[“DeadLetterReason“].ToString()
};
messagesFromDeadLetterQueue.Add(deadLetterQueueMessage);
msg.Complete();
}
               else
{
queueStillHasMessages = false;
}
}
        return messagesFromDeadLetterQueue;
}

参考: 使用 Azure 服务总线死信队列

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM