首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以从死信队列发送消息回死信队列吗?

我可以从死信队列发送消息回死信队列吗?
EN

Stack Overflow用户
提问于 2022-07-06 16:49:13
回答 1查看 272关注 0票数 0

我目前有一个azure函数,它处理来自服务总线的DLQ的消息。我想要实现的是尝试手动处理它,但是如果它不能成功地将消息转发回DLQ,并且基于自定义逻辑进行处理3次。我正在接收ServiceBusReceivedMessage对象,但是当我试图将它发送回DLQ时,要么通过创建一个新的ServiceBusClient,要么通过使用ServiceBusMessageActions,我要么得到一个The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue, or was received by a different receiver instance. (MessageLockLost)。或者是InvalidException。

我想要做的事情是可以实现的吗?或者我应该创建一个新的ServiceBusMessage并将消息重新提交到原始队列中,而不是直接提交给DLQ?

这是重新提交所有内容的代码:

代码语言:javascript
复制
try
            {
                var serviceBusClient = new ServiceBusClient(Environment.GetEnvironmentVariable("ConnectionString"), new ServiceBusClientOptions()
                {
                    
                });
                var receiver = serviceBusClient.CreateReceiver(Environment.GetEnvironmentVariable("QueueName"), new ServiceBusReceiverOptions()
                {
                    SubQueue = SubQueue.DeadLetter,
                });
                await receiver.DeadLetterMessageAsync(dlqItem, deadLetterReason: Constants.DLQReason);
                //Above method not working. Bellow neither
                //await messageActions.DeadLetterMessageAsync(dlqItem, deadLetterReason: Constants.DLQReason);

            } catch (Exception ex)
            {
                log.LogError($"MessageId: {dlqItem.MessageId}. There was an error sending the message to DLQ: {ex.Message}");
                throw;
            }

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 17:00:31

当收到来自死信队列的消息时,它已经是死信,不需要再用死字。只要在窥视锁定模式下收到死信消息,消息就会保持在DLQ中。如果您在接收和删除模式下接收到消息,它将从代理中消失,不能进行DLQ编辑。

你需要小心,不要在这里自己动手。如果一个函数被配置为从DLQ接收并且不能处理消息,它将继续接收该消息,除非它已经完成。

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

https://stackoverflow.com/questions/72887234

复制
相关文章

相似问题

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