由于超过重试计数,我有几条邮件是自动写成死信的。现在我试着像这样重新排队:
while ((msg = DeadLetterQueueClient.Receive()) != null)
{
var body = msg.GetBody<MyModel>();
QueueClient.Send(new BrokeredMessage(body));
}我接收到所有死信,但是队列中的消息不清楚。每次启动此代码时,都会再次收到相同的消息。
怎么了?
PS:根据古老的Azure门户网站,队列实际上已经关闭了死字。这些消息仅显示为中的死字,我也使用上面的代码接收它们。
发布于 2015-04-14 14:59:55
将消息标记为已完成,并应从死信队列中删除它。
while ((msg = DeadLetterQueueClient.Receive()) != null)
{
var body = msg.GetBody<MyModel>();
QueueClient.Send(new BrokeredMessage(body));
msg.Complete();
}发布于 2016-11-18 17:51:30
如果希望保留标头属性,则可能希望使用msg.Clone()而不是将主体复制到新的BrokeredMessage中。
发布于 2018-09-25 12:38:43
您还可以尝试使用此代码从队列中删除死信消息。
MessageReceiver fromQueueClient = null;
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
fromQueueClient = await factory.CreateMessageReceiverAsync(_entityName, ReceiveMode.PeekLock);
BrokeredMessage _message = await fromQueueClient.ReceiveAsync(SequenceNumber);
await _message.CompleteAsync();https://stackoverflow.com/questions/29629604
复制相似问题