使用队列的JMS消息 - 客户确认与交易会话?

时间:2014-11-11 19:16:49

标签: java jms messaging

JMS规范和不同经纪人之间的细微差别让我发疯。

现在我已经实现了一个简单的系统,它一次从JMS队列中读取一条消息并对其执行某些操作。 “它”需要网络操作可能会不时失败。

我当前的实现基于使用客户端确认模式打开非事务JMS会话。当消息处理成功时,我调用确认,当它不是时,我只是关闭会话。

这是实现此目的的最佳方式吗?重新交付政策怎么样?从我现在所知的情况来看,这似乎在每个JMS代理实现中都有不同的处理方式(这很糟糕,因为我必须处理两种不同的实现)。

我非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

  

这是实现此目的的最佳方法吗?

保持消息不被确认存在问题:可以不断重新发送消息。尝试从基本策略开始 - 自动确认和交易会话。

  

如何重新投放政策

如果失败,只需在侦听器中抛出异常并在代理中配置死信队列(DLQ)。失败后,让经纪人向DLQ发送消息。稍后您可以手动删除此消息或将其排队以进行重新传递,但通常是手动过程。