问题标签 [dead-letter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rabbitmq - RabbitMQ 中的死信死信消息
这是我们在这里的:
- 主题交换
DLE
,旨在成为死信交换 - 主题交换
E
,这是“主要”交换 - 几个队列 (
EQ1
, ...,EQn
) 绑定到E
(并用 初始化x-dead-letter-exchange = DLE
),每个队列都有自己的 Routing Key。这些队列是从中消费的。 - 对于每个
EQn
,都有一个(用和DLEQn
初始化),绑定到与 相同的路由键。这些队列没有被消耗x-dead-letter-exchange = E
x-message-ttl = 5000
DLE
EQn
我想要的是以下内容:如果消费者无法处理来自EQn
的消息,它会使用 Nacks 消息requeue: false
并到达DLEQn
- 也就是说,到达死信交换上的适当队列。现在,我希望这条消息在队列中DLEQn
停留一段时间,然后被路由回原始队列EQn
以再次处理。
尽我所能,我无法让“重新传递到原始队列”工作。我看到消息位于DLEQn
所有正确的标头和路由密钥完好无损,但在 TTL 到期后,它们就消失得无影无踪。
我在这里做错了什么?
java - 使用javaDSL从骆驼路由中的消息中获取标头
我需要将死信重定向到消息中标题定义的目录。
我试过这个:
我得到的是这样的 URI: deadLetter\header{code1}\header{code2}\header{code3}\TIMESTAMP.msg
有没有办法获取这些标题,以便我可以构建路线?
rabbitmq - RabbitMQ 消息在主题队列的 ttl 到期时没有死信
我有以下配置
我在annoter-queue和consumer.queue上设置了 DLX,因此他们的消息在 1 秒后移动到consumer.exchange-dl 。
对于绑定到另一个交换(直接)的另一个队列,一切正常;发送到consumer.exchange (topic) 的消息不会移动到 DLX。我尝试使用 DLX 的路由键绑定,但没有任何效果。在 DLX 上进行主题交流有什么陷阱吗?
谢谢
php - RabbitMQ - 队列和死信
我已经设置了一个发送电子邮件的队列。
另外,我在这个队列上设置了一个死信交换。请看下图。
如您所见,队列是持久的,TTL 为 1 天,并为此队列设置了死信交换。
正在发生的事情是
- 当我将消息推送到此队列时,如果没有消费者在监听,则消息将被推送到 DLX,但它们应该在队列中停留 1 天(由 TTL 设置),然后再进入 DLX。
- 如果我向队列发送 100 条消息,则 99 条进入 DLX,1 条消息在某处丢失。我不知道这是怎么回事。请看下图。
- 我已将队列设置为持久队列,但在消息进入 DLX 后仍将其删除。
请帮助我了解我可能遗漏的内容。
谢谢
error-handling - 骆驼死信通道处理器
下面是我的骆驼路线代码
下边是MyErrorProcessor
代码
我的记录器没有记录我发送的错误代码E_MYERROR_01
我在errorHandler deadletterchannel中做错了什么吗?
error-handling - 所有异常的骆驼死信通道
我正在创建一个死信通道错误处理程序,如下所示
Bean MyErrorProcessor 应该能够处理所有类型的已检查和未检查异常,如下所示。
但是在处理异常之后,原始消息应该被重定向到路由的端点。一旦这样处理异常,如何继续路由?
rabbitmq - RabbitMQ 死信队列从不持久
有没有办法确保当您 NACK 一条消息并将其发送到死信交换/队列时,它将是持久的?默认情况下,即使使用 SetPersistent(true) 将原始消息设置为持久性,死信消息也不会遵循套件。
rabbitmq - RabbitMQ - 在消息到达过期时间后路由消息
我最近发现了允许您延迟消息的 RabbitMQ 功能,并且效果很好,尽管我找不到与我需要的类似的示例:
假设有 3 种类型的消息:A、B 和 C。我们有 2 个具有 1 小时和 2 小时'x-message-ttl
值的延迟队列。还有 3 种类型的destination_queues - 每种用于特定的消息类型。
我想要实现的是,在 delay_queues 之一中的消息达到其 TTL 后,它将根据其类型被路由到 destination_queues 之一。像这样的东西:
这甚至可以使用 RabbitMQ 消息属性吗?有任何想法吗?我的代码将消息发送到延迟队列(到期后它们被发送到 hello 队列):
java - 如何在骆驼死信路线中同时拥有原始消息和重新投递柜台
我有一个配置有死信通道的骆驼路线,如下所示:
它工作正常,但现在我需要保存在将消息发送到死信通道之前发生的重新传递次数。请注意,我使用的是 useOriginalMessage(),所以这是我想保存在死信通道中的消息(是的!我的路线在途中改变了它)。
我试图访问消息头 Exchange.REDELIVERY_COUNTER 中的重新传递次数,但是当消息到达 deadLetterService bean 时它始终为空。我确实理解这是因为原始消息没有此标头信息。
如何在保留重新投递计数器的同时恢复原始消息作为交换?有没有办法做到这一点?
提前致谢。
海伦诺
akka - 挂钩 Akka DeadLetterActorRef
根据 Akka 文档, aDeadLetterActorRef
是:
死信服务的默认实现,Akka 将所有目的地已关闭或不存在的消息路由到该服务。
如果我想“利用”演员被终止后发送的死信,我是否只是以某种方式“挂钩”它DeadLetterActorRef
并让它把它收到的所有东西都传递给我?还是我将其子类化?还是我做一些完全不同的事情?不管怎样,怎么办?