情景:
我的想法是,当新消息到达JMS队列时,让MDB立即尝试重新发送,但是每隔1分钟将其限制为5次。然后从JMS队列中删除该消息并将其放入数据库中。然后,另一个(@Scheduled)EJB将每隔1小时从DB中获取未发送的消息,并将其发送到自己的线程中。
有更简单的方法吗?
答案 0 :(得分:1)
是的,有,但它取决于您使用的JMS提供程序。不幸的是,目前在JMS API中不支持延迟消息,这绝对是您问题的最优雅解决方案。但是,如果您使用以下某些JMS提供程序:Oracle AQ,JBoss,OpenJMS,ActiveMQ;他们通过调用内置了对延迟消息的支持:
msg.setLongProperty("SOME-PROVIDER-SPECIFIC-PARAMETER, delay);
参考: