在apache nms中发送消息

时间:2013-04-10 13:17:14

标签: c# stomp apache-nms

我正在尝试使用apache nms stomp来发送/接收消息。由于使用了hornetq,我无法使用Transnational ack模式。我的消费者情景:

  1. 收到消息
  2. 处理消息
  3. 如果处理成功(使用message.Acknowledge())
  4. 确认
  5. 如果进程失败,则为NACK(????)
  6. 如果进程失败,我想要的只是NACK消息;那我怎么能在apache nms中消息?

1 个答案:

答案 0 :(得分:1)

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

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

现在看来,NMS.Stomp实现在异步消息回调中抛出异常时不会消息,但这可能是一个明智的增强,项目确实接受了贡献,所以潜入。