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