问题标签 [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.

0 投票
1 回答
1062 浏览

java - 从死信队列中恢复

我一直收到来自 Queue1 的所有 JMS 消息并尝试处理它。
如果我尝试处理 5 次并回滚 5 次,我希望 ActiveMQ 将消息放入不同的队列一段时间(例如 5 分钟)。
我怎样才能做到这一点?

0 投票
1 回答
5204 浏览

websphere - 在 WebSphere MQ 中配置死信队列

我在我的应用程序中使用 IBM Websphere 和 MQ,现在我想知道如何配置(或)让 Websphere 了解在 MQ 中创建了一个死信队列,比如 DEAD.QUEUE,它应该使用这个队列以防万一处理来自请求/响应队列的消息时失败。

我正在尝试这样做,因为队列中有一条失败的消息正在尝试一次又一次地将其重新发布到队列中。如果配置了死信队列,那么我想这可能会停止。如果我错了,请纠正我。

0 投票
3 回答
4773 浏览

node.js - 在 RabbitMQ 和使用 AMQP.Node 的节点中未使用死信消息

我想在我的一名工人经过一定时间后收到一条消息。在发现所谓的死信交换后,我决定使用 Node 和 RabbitMQ。

该消息似乎已发送到 DeadExchange 中的队列,但在 WorkExchange 中的 WorkQueue 中经过一段时间后,消费者从未收到该消息。bindQueue 已关闭,或者死信不起作用?

我现在尝试了很多不同的值。有人可以指出我缺少什么吗?

我正在使用 amqp.node ( https://github.com/squaremo/amqp.node ),它是 npm 中的 amqplib。虽然 node-amqp ( https://github.com/postwait/node-amqp ) 似乎更受欢迎,但它并没有实现完整的协议,并且在重新连接方面存在相当多的突出问题。

dev.rabbitmq.com 正在运行 RabbitMQ 3.1.3。

0 投票
1 回答
274 浏览

queue - NServiceBus 4.03,当队列不存在时,消息被发送到事务死信 Q

我有分销商/工人模型。

机器 A - 分销商

机器 B - 工人

当工人 B 尝试使用错误的 Q 名称向 Distributor 发送消息时,它会将消息放入事务死信 Q 中。

我期待消息传递给错误 q。

0 投票
1 回答
3144 浏览

jms - Camel与ActiveMQ中的死信队列?

我正在使用死信通道 EIP,完全按照死信通道的骆驼文档中的描述。这是我的 camel.xml(已删除标题)

我只有一个具有基于内容的路由器的路由,它基本上说如果消息体有 getInfo 然后从 jms:foo 路由到 jms:getInfo,如果消息体有 performAction 然后从 jms.foo 路由到 jms:performAction

我希望当 jms:getInfo 消费者未运行时,交付将失败,重新交付尝试将如 spring XML 中所指定。但是什么也没有发生,也没有任何东西进入死信队列,而是 activemq 抛出了如下所示的异常。

有人可以解释为什么它不起作用吗?我的理解是,当消费者(将从基于内容的路由器接收消息的目的地)没有运行时,acivemq 知道它甚至不应该传递它并且应该立即抛出一个异常,然后由骆驼的死信通道处理按照配置。

我正在使用骆驼 2.10.3 和 activemq 5.8.0。

我怀疑 activemq 正在处理失败的消息传递,而忽略了死信队列的骆驼 xml 配置,因为这些失败的消息显示在 activemq Web 控制台的 Activemq.DLQ 中。如果消费者正在运行,则消息根据 camel.xml 中指定的路由成功传递。

0:58:46,317 | 调试 | 发送 JMS 消息到:queue://getInfo 消息:ActiveMQMapMessage {commandId = 0, responseRequired = false, messageId = null, originalDestination = null, originalTransactionId = null, producerId = null, destination = null, transactionId = null, expiration = 0 ,时间戳 = 0,到达 = 0,brokerInTime = 0,brokerOutTime = 0,correlationId = a79a0f9e-c88f-4501-a56d-2d5667aa98e0,replyTo = temp-queue://ID:myhost-57639-1382233787365-3:3:6 ,persistent = false,type = null,priority = 4,groupID = null,groupSequence = 0,targetConsumerId = null,compressed = false,userID = null,content = null,marshalledProperties = null,dataStructure = null,redeliveryCounter = 0,size = 0, 属性 = {breadcrumbId=ID:myhost-57439-1382232345453-1:1:1:1:6, CamelJmsDeliveryMode=1}, readOnlyProperties = false, readOnlyBody = false, droppable = false} ActiveMQMapMessage{ theTable = {cluster=x78} } | org.apache.camel.component.jms.JmsConfiguration | Camel(骆驼)线程 #2 - JmsConsumer[bar] 20:58:48,044 | 调试 | 驱逐非活动条目 ID:8b0d77a3-afef-4612-a49f-22c1b81eb80e(20000 毫秒后超时)| org.apache.camel.component.jms.reply.CorrelationTimeoutMap | 骆驼(骆驼)线程 #9 - JmsReplyManagerTimeoutChecker[getInfo] 20:58:48,044 | 警告 | 等待具有相关 ID [8b0d77a3-afef-4612-a49f-22c1b81eb80e] 的回复消息 20000 毫秒后发生超时。设置 ExchangeTimedOutException on (MessageId: ID:myhost-57439-1382232345453-1:1:1:1:5 on ExchangeId: ID-myhost-57640-1382233788284-0-2) 并继续路由。| org.apache.camel.component.jms.reply.TemporaryQueueReplyManager | Camel(骆驼)线程 #9 - JmsReplyManagerTimeoutChecker[getInfo] 20:58:48,045 | 警告 | JMS 消息侦听器的执行失败。原因:[org.apache.camel.RuntimeCamelException - org.apache.camel.ExchangeTimedOutException:未收到 OUT 消息:20000 毫秒到期回复消息,相关 ID:8b0d77a3-afef-4612-a49f-22c1b81eb80e 未收到。交换[JmsMessage[JmsMessageID: ID:myhost-57439-1382232345453-1:1:1:1:5]]] | org.apache.camel.component.jms.EndpointMessageListener | 骆驼(骆驼)线程#4-JmsConsumer [bar] org.apache.camel.RuntimeCamelException:org.apache.camel.ExchangeTimedOutException:未收到OUT消息:20000毫秒到期回复消息,相关ID:8b0d77a3-afef-4612-未收到 a49f-22c1b81eb80e。Exchange[JmsMessage[JmsMessageID: ID:myhost-57439-1382232345453-1:1:1:1:5]] 在 org.apache.camel.util.ObjectHelper。ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) 原因:org.apache.camel.ExchangeTimedOutException:未收到 OUT 消息:20000 毫秒到期回复未收到相关 ID 为 8b0d77a3-afef-4612-a49f-22c1b81eb80e 的消息。Exchange[JmsMessage[JmsMessageID: ID:myhost-57439-1382232345453-1:1:1:1:5]] 在 org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:133) 在 org .apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:61) 在 org.apache.camel.component.jms.reply.CorrelationTimeoutMap.onEviction(CorrelationTimeoutMap.java:53) 在 org.apache.camel .component.jms.reply.CorrelationTimeoutMap.onEviction(CorrelationTimeoutMap.java:

0 投票
1 回答
980 浏览

jms - 处理死信队列 (DLQ)

处理导致消息队列异常的 JMS 消息的最佳方法是什么?

我所做的是为特定队列设置 DLQ。我将重试处理消息 5 次,重试延迟为 30 秒。如果无法处理消息,则可能是由于某些错误 - 我将消息移动到我的持久 DLQ。所以想法是部署一个错误修复,然后将 DLQ 中的消息放回队列中。

这是最好的方法吗?如果是这样,我该如何“重新发布”我在 DLQ 中的消息?

0 投票
2 回答
8684 浏览

c# - 如何删除 Azure 服务总线主题上的死信消息

我正在编写一段代码,它可以让我们:

  1. 查看 Azure 服务总线主题 (Peek) 中存在的所有死信消息的列表
  2. 修复并将它们发送回主题
  3. 重新发送时将它们从死信队列中删除。

我对前两点没有意见;使用 Peek 接收模式,我可以显示消息列表,我们可以毫无问题地编辑和重新发送。

当我想从死信队列中实际删除消息时,问题就来了。

我们如何按消息级别对消息执行此操作?我们可能只想删除死信队列中的 2 条消息,并保留其他消息以供稍后查看。调用.Complete()死信队列中的消息是否会像在主订阅中那样删除它?

以供参考; 这是我们获取SubscriptionClient死信队列的代码:

0 投票
1 回答
1567 浏览

java - Akka Remote Routing using Java

I am trying to implement a basic broadcast router in which the routees are on remote machines.

The code is as follows :

localApp.conf

LocalApp.java

In the remoteApp.conf, the port is given as 10175

RemoteApp.java

Now I am not able to understand concept of remote routing. Does it deploy a local actor on remote machines and then send messages to them, or connect to remote actors on remote machines and then send messages to them ?

Using my code, I am able to send simple messages to the remote machine ( using actor selection ) the remoteActor.tell(msg, getSelf()) ( commented code ) in the LocalApp sends and receives messages and doesn't give any error.

But When I create the router using local Actor, I get dead letter errors.

Can someone tell me what I am doing wrong ?

---------UPDATE----------

I Found out the problem. The remote and local classes were in different projects. During basic communication between the local and remote project, String was the type of the object transferred, that why it was successful. Is there a way to transfer objects of custom classes between two different projects ? I tried implementing Serializable and adding it to the conf file but it doesn't make a difference

0 投票
1 回答
2083 浏览

scala - akka 2.2.0 Scala 2.11“消息未传递”-除非使用 Thread.sleep(50)

我是 Scala 和 Akka 的新手,但有一个简单的场景......我正在尝试获取一个 url 列表,将每个 url 作为消息发送到一个新的参与者中,该参与者将发出一个 http GET 请求。只有 16 个 url 的列表,我获得了大约 40-65% 的成功,而其他人得到死信“消息未传递”。但是,如果我在创建演员之前放置一个 Thread.sleep(50),我不会收到死信未命中。注意:HTTP Get 使用的是 java 类,而不是 scala 类,它可能是一个因素,也可能不是一个因素。请参阅下面的代码示例...我知道 Akka 不保证消息,但是这个成功率看起来不对,我一定是做错了。感谢您的任何指示。

0 投票
8 回答
31530 浏览

rabbitmq - RabbitMQ 死信交换永远不会收到消息

我正在尝试设置我的第一个 RabbitMQ 死信交换,以下是我通过 Web 管理界面使用的步骤:

  1. 使用名称“dead.letter.test”创建新的 DIRECT 交换
  2. 创建新队列“dead.letter.queue”
  3. 将“dead.letter.queue”绑定到“dead.letter.test”
  4. 创建新队列“test1”,死信交换设置为“dead.letter.test”
  5. 向“test1”发送消息
  6. Nack (with requeue = false) "test1" 中的消息

我期望这些步骤应该通过“dead.letter.test”交换将记录放入“dead.letter.queue”。这没有发生。

我可以手动将消息放入“dead.letter.test”交换中,它会显示在“dead.letter.queue”中,所以我知道这很好。

当我查看管理 UI 时,它显示 DLX 参数设置在队列“test1”上。

我哪里错了?