hornetq保证消息到达队列

时间:2013-11-17 11:59:31

标签: hornetq

我正在使用org.hornetq.api.core.client 我怎样才能保证我发送的消息到达队列(不是客户端,只是队列)?

producer.send("validQueue",clientMessage) 

请注意,队列是有效的队列。

similar question指的是无效队列。 this one之类的其他内容与向客户交付相关。

1 个答案:

答案 0 :(得分:3)

这实际上取决于你的发送方式。

你的第一个问题是关于 首先,在JMS上,您必须发送到无效队列,因为生产者将验证队列的存在。在HornetQ核心api上,您发送到一个地址(而不是队列),并且您可能有一个未绑定的队列。所以你必须查询地址是否有队列。

现在,为了确认收到了消息:

  • 场景I,持久性消息,非事务性

每条消息都被阻止发送。一旦服务器确认收到消息,客户端将解除阻止。这是自动完成的......您无需做任何事情。

  • 场景II,非持久性消息,非事务性

默认情况下没有确认。消息以异步方式发送。我们假设这个消息是短暂的,如果你输了它就没什么大不了的。您可以通过在ServerLocator上设置block-on-non-persistent-send来改变它。

  • 场景III,交易(持续或不持续)。

一旦调用commit,消息就会出现在队列中。

  • 场景IV,确认发送

您设置回调,并在服务器在队列中对其进行处理后立即进行方法调用。查看手册以确认回调。 JMS2上也有相同的功能。