38
社区成员
发帖
与我相关
我的任务
分享
目前使用spring 和camel的架构连接IBM MQ读取消息,配置都是默认,所以在消息读取之后,在MQ中会马上删除消息。
现在需要添加在读取消息之后的异常操作,处理流程如下:
1. MQ中读取消息(暂时不删除)
2. 处理消息
3. if 如果消息正常处理,
then 返回MQ消息acknowledge= true(MQ删除消息)
else 返回MQ消息acknowledge= false (MQ保留消息)
现在在spring中的相关配置:
1. ibm.mq.additional-properties.XMSC_ACKNOWLEDGE_MODE: 2
2. spring.jms.listener.acknowledge-mode= client
3. 没有其他java代码
问题是,根据当前配置,我期待MQ中的消息读取之后不会减少,因为我没有添加acknowledge=true的代码,但是事实是消息还会被MQ自动删除
有大神能指点一下吗?需要改动什么才能保留消息?
问题解决,其实都不需要增加任何配置,在consumer的路由上,添加transacted=true,或者在代码中添加。transacted()就可以
更新一下状态,现在在camel中,加入了.transacted(),将处理流程当作一个事务来处理。
但是问题是,如果程序当掉,当前处理的消息是没有办法写回到MQ中的。如果程序没有挂掉,其他部件出问题,消息会被写回到MQ
继续关注
没人懂吗?