JMS规范和不同经纪人之间的细微差别让我发疯。
现在我已经实现了一个简单的系统,它一次从JMS队列中读取一条消息并对其执行某些操作。 “它”需要网络操作可能会不时失败。
我当前的实现基于使用客户端确认模式打开非事务JMS会话。当消息处理成功时,我调用确认,当它不是时,我只是关闭会话。
这是实现此目的的最佳方式吗?重新交付政策怎么样?从我现在所知的情况来看,这似乎在每个JMS代理实现中都有不同的处理方式(这很糟糕,因为我必须处理两种不同的实现)。
我非常感谢任何帮助!
答案 0 :(得分:0)
这是实现此目的的最佳方法吗?
保持消息不被确认存在问题:可以不断重新发送消息。尝试从基本策略开始 - 自动确认和交易会话。
如何重新投放政策
如果失败,只需在侦听器中抛出异常并在代理中配置死信队列(DLQ)。失败后,让经纪人向DLQ发送消息。稍后您可以手动删除此消息或将其排队以进行重新传递,但通常是手动过程。