我正在使用org.hornetq.api.core.client 我怎样才能保证我发送的消息到达队列(不是客户端,只是队列)?
producer.send("validQueue",clientMessage)
请注意,队列是有效的队列。
此similar question指的是无效队列。 this one之类的其他内容与向客户交付相关。
答案 0 :(得分:3)
这实际上取决于你的发送方式。
你的第一个问题是关于 首先,在JMS上,您必须发送到无效队列,因为生产者将验证队列的存在。在HornetQ核心api上,您发送到一个地址(而不是队列),并且您可能有一个未绑定的队列。所以你必须查询地址是否有队列。
现在,为了确认收到了消息:
每条消息都被阻止发送。一旦服务器确认收到消息,客户端将解除阻止。这是自动完成的......您无需做任何事情。
默认情况下没有确认。消息以异步方式发送。我们假设这个消息是短暂的,如果你输了它就没什么大不了的。您可以通过在ServerLocator上设置block-on-non-persistent-send来改变它。
一旦调用commit,消息就会出现在队列中。
您设置回调,并在服务器在队列中对其进行处理后立即进行方法调用。查看手册以确认回调。 JMS2上也有相同的功能。