首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未清除死信队列

未清除死信队列
EN

Stack Overflow用户
提问于 2015-04-14 14:09:53
回答 4查看 1.1K关注 0票数 0

由于超过重试计数,我有几条邮件是自动写成死信的。现在我试着像这样重新排队:

代码语言:javascript
复制
while ((msg = DeadLetterQueueClient.Receive()) != null)
{
    var body = msg.GetBody<MyModel>();
    QueueClient.Send(new BrokeredMessage(body));
}

我接收到所有死信,但是队列中的消息不清楚。每次启动此代码时,都会再次收到相同的消息。

怎么了?

PS:根据古老的Azure门户网站,队列实际上已经关闭了死字。这些消息仅显示为中的死字,我也使用上面的代码接收它们。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-14 14:59:55

将消息标记为已完成,并应从死信队列中删除它。

代码语言:javascript
复制
while ((msg = DeadLetterQueueClient.Receive()) != null)
{
    var body = msg.GetBody<MyModel>();
    QueueClient.Send(new BrokeredMessage(body));
    msg.Complete();
}
票数 1
EN

Stack Overflow用户

发布于 2016-11-18 17:51:30

如果希望保留标头属性,则可能希望使用msg.Clone()而不是将主体复制到新的BrokeredMessage中。

票数 0
EN

Stack Overflow用户

发布于 2018-09-25 12:38:43

您还可以尝试使用此代码从队列中删除死信消息。

代码语言:javascript
复制
  MessageReceiver fromQueueClient = null;

        MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
        fromQueueClient = await factory.CreateMessageReceiverAsync(_entityName, ReceiveMode.PeekLock);

            BrokeredMessage _message = await fromQueueClient.ReceiveAsync(SequenceNumber);

                await _message.CompleteAsync();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29629604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档