使用队列的JMS消息-客户端确认或事务会话



JMS规范和不同代理之间的细微差异让我抓狂。

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

我目前的实现是基于使用客户端确认模式打开一个非事务性JMS会话。当消息处理成功时,我会呼叫确认,否则我只会关闭会话。

这是实现这一目标的最佳方式吗?重新交付政策如何?据我现在所知,在每个JMS代理实现中,这似乎都有不同的处理方式(这很糟糕,因为我必须处理两个不同的实现)。

如果有任何帮助,我将不胜感激!

这是实现这一目标的最佳方式吗?

保持邮件未确认存在问题:邮件可能会不断重新发送。试着从基本策略开始——自动确认和交易会话。

关于再交付政策

在失败的情况下,只需在侦听器中抛出异常,并在代理中配置死信队列(DLQ)。失败后,让代理将消息放入DLQ。稍后,您可以手动丢弃这些消息或将它们排队等待重新传递,但通常这是手动过程。

最新更新