只读JMS主题订阅? (或在出队时保留JMS消息)

时间:2018-10-15 23:41:45

标签: jms activemq

我有一个积压的ActiveMQ消息主题,用于生产环境中的客户数据,我需要编写一个使它出队并执行必要的业务逻辑的脚本。

如果业务逻辑出现问题,但是我已经阅读了该消息(可能是通过JMS),那可能意味着所有消息都消失了,而我将陷入极大的麻烦。

是否可以读取消息而不删除消息?

1 个答案:

答案 0 :(得分:2)

这是消息传递中的常见模式。如果您使用的是JMS API,则有两种选择:

  1. 在创建会话时使用CLIENT_ACKNOWLEDGE模式,并在业务逻辑完成后确认消息。如果业务逻辑失败,请不要确认该消息,并且该消息也不会从队列中删除。
  2. 使用交易会话。如果业务逻辑成功完成,则提交事务。如果业务失败,则回滚事务。

这两种情况都很常见,您可以使用自己喜欢的搜索引擎找到有关所有正确API调用等的更多信息。