2

我正在尝试使用 apache nms stomp 发送/接收消息。由于使用了hornetq,我无法使用跨国确认模式。我的消费场景:

  1. 接收消息
  2. 处理消息
  3. 如果进程成功则确认它(使用 message.Acknowledge())
  4. 如果进程失败(??????)

如果进程失败,我想要的只是 NACK 消息;那么我如何在 apache nms 中 NACK 消息?

4

1 回答 1

1

我不知道为什么你不能使用 HornetQ 的交易。当前让客户端发送 NACK 的唯一方法是使用事务并在出错时回滚事务。一旦达到配置的最大允许重新传递,客户端将 NACK 消息。

在大多数实现中,如果您的客户端未确认消息然后断开连接,则消息将重新传递给另一个客户端。对于 ActiveMQ,您可以配置代理在将消息移动到死信队列之前尝试此操作的最大次数。

就目前而言,当异步消息回调抛出异常时,NMS.Stomp 实现不会 NACK 消息,但这可能是一个明智的增强,该项目确实接受了贡献,因此请深入研究。

于 2013-04-20T10:20:43.273 回答