jboss中的JMS队列重新交付顺序

jboss中的JMS队列重新交付顺序,jms,hornetq,Jms,Hornetq,我从线程向队列发送一个java对象。relavent MDB的onMessage由队列中的消息调用。在消息上,我将消息中的一个键与缓存中的一个键进行匹配,如果该键不存在,我将抛出一个自定义runtimeexception以使容器重新传递该消息。(我有另一个自主系统,从外部系统响应向缓存添加密钥,速度可能会慢3-5秒) 在这种情况下,此容器是将此未处理的消息添加到队列的末尾,还是立即重新传递?有没有办法延迟重新交付的时间?假设队列始终每秒充满约550条消息 关于HornetQ上目前有一个重新交付延

我从线程向队列发送一个java对象。relavent MDB的onMessage由队列中的消息调用。在消息上,我将消息中的一个键与缓存中的一个键进行匹配,如果该键不存在,我将抛出一个自定义runtimeexception以使容器重新传递该消息。(我有另一个自主系统,从外部系统响应向缓存添加密钥,速度可能会慢3-5秒) 在这种情况下,此容器是将此未处理的消息添加到队列的末尾,还是立即重新传递?有没有办法延迟重新交付的时间?假设队列始终每秒充满约550条消息


关于

HornetQ上目前有一个重新交付延迟功能,但所有后续消息都可以正常发送

如果发生重新交付但尚未实现,则会有一个功能请求将队列保留一段时间

但是,如果您的队列中有多个消费者,那么订单将与您的消费者一起分配。如果deliveryCount>1,您可以使用消息分组并在onMessage上添加睡眠。消息分组是为了保证没有其他使用者(或另一个MDB实例)接收到无序的消息

根据应用程序的运行方式和需求,您可能希望只允许MDB的一个实例

另外:查看使用者窗口大小,您可以在客户端上选择无缓冲区,当您有多个使用者或多个mdb实例时,该缓冲区具有更好的行为