[问题] spring camel连接IBM MQ,message的读取,删除操作

shoppo0505 2022-08-18 11:11:42

目前使用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自动删除

 

有大神能指点一下吗?需要改动什么才能保留消息?

 

...全文
206 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shoppo0505 2022-08-29
  • 打赏
  • 举报
回复

问题解决,其实都不需要增加任何配置,在consumer的路由上,添加transacted=true,或者在代码中添加。transacted()就可以

shoppo0505 2022-08-23
  • 打赏
  • 举报
回复

更新一下状态,现在在camel中,加入了.transacted(),将处理流程当作一个事务来处理。
但是问题是,如果程序当掉,当前处理的消息是没有办法写回到MQ中的。如果程序没有挂掉,其他部件出问题,消息会被写回到MQ

继续关注

shoppo0505 2022-08-19
  • 打赏
  • 举报
回复

没人懂吗?

38

社区成员

发帖
与我相关
我的任务
社区描述
Spring相关技术分享讨论
社区管理员
  • 七号公园的忧伤
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧