首页 文章

jboss中的JMS队列重新传递顺序

提问于
浏览
1

我从一个线程发送一个java对象到一个队列 . 使用队列中的消息调用相关MDB的onMessage . onMessage,我将消息中的密钥与缓存中的密钥匹配,如果密钥不存在,我抛出一个自定义的runtimeexception只是为了让容器重新发送此消息 . (我有另一个自治系统,它从外部系统响应中添加缓存的密钥,它可能会慢到3-5秒)在这种情况下,此容器是否将此未处理的消息添加到队列的末尾,或者是立刻重新传递?有没有办法延迟重新传递时间?假设队列总是每秒充满~550条消息 .

问候

1 回答

  • 0

    HornetQ目前有一个重新传递延迟功能,但所有后续消息都可以正常传送 .

    如果重新发生但尚未实施,则会有一个功能请求来保留队列一段时间 .

    但如果队列中有多个消费者,订单将随消费者一起传播 . 如果deliveryCount> 1,您可以使用消息分组并在onMessage上添加休眠 . 消息分组是为了保证没有其他消费者(或另一个MDB实例)将不按顺序接收消息 .

    根据您的应用程序完成方式,根据您的要求,您可能只希望允许单个MDB实例 .

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

相关问题