Jboss JMS在稍后时间传递消息
我试图在一段时间后传递JMS消息,我最初的想法是使用到期队列,并将消息放入没有任何使用者的队列中。因此,我有3个默认队列:Jboss JMS在稍后时间传递消息,jboss,jms,hornetq,Jboss,Jms,Hornetq,我试图在一段时间后传递JMS消息,我最初的想法是使用到期队列,并将消息放入没有任何使用者的队列中。因此,我有3个默认队列: WaitQueue-(此队列的到期队列设置为SendQueue) 发送队列-此队列具有处理消息的使用者(默认情况下,此队列将expiryQueue作为其超时队列) ExpiryQueue-所有真正过期的消息的默认jboss队列(并非有意) 在将消息插入WaitQueue时,我的预期延迟为TimeToLive,在时间到期后,我希望看到SendQueue中的消息(以及处理它
- WaitQueue-(此队列的到期队列设置为SendQueue)
- 发送队列-此队列具有处理消息的使用者(默认情况下,此队列将expiryQueue作为其超时队列)
- ExpiryQueue-所有真正过期的消息的默认jboss队列(并非有意)
SendQueue的统计数据显示,“接收到的消息”增加,但当前消息保持在0,因此它们到达后会立即转发到最后一个ExpiryQueue。而不是使用资源密集型的ExpiryQueue方法;可以考虑在消息级别使用传递延迟。 对于HornetQ,您可以设置属性_HQ_SCHED_DELIVERY。 由于JMS2.0(JavaEE7),因此也可以在MessageProducer上设置此属性。看
TextMessage message = session.createTextMessage("This is a scheduled message message which will be delivered in 5 sec.");
message.setLongProperty("_HQ_SCHED_DELIVERY", System.currentTimeMillis() + 5000);
producer.send(message);