首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveMQ脱队列消息的重排序

ActiveMQ脱队列消息的重排序
EN

Stack Overflow用户
提问于 2022-02-14 12:30:55
回答 1查看 108关注 0票数 0

我有一个Spring应用程序,它将JSON消息推送到队列中,而在另一个地方,它使用@JmsListener来使用那些JSON消息。然后通过HTTP请求发送这些消息。响应代码可能是200,这是可以的,但我想处理当客户端关闭时的情况,或者只是响应代码与200不同。

有什么机制可以用来重试消息吗?也许我可以在队列结束时回推消息,然后重试3次吗?在消息实际退出队列后,是否有任何内部ActiveMQ机制来执行此操作?

EN

回答 1

Stack Overflow用户

发布于 2022-02-14 15:07:19

听起来你在寻找消费者和HTTP之间的事务。在代码调用session.commit()之前,JMS不会确认队列中的消息。然后,您可以调用一个HTTP端点,并维护合理的事务和单个消息传递的服务质量。

使此自我恢复的关键是检测无效的消息有效负载(即坏JSON格式或坏数据),并将这些消息移动到DLQ中。

考虑添加JMS事务支持,而不是使用AUTO_ACKNOWLEDGE

代码语言:javascript
复制
connection.createSession(true, Session.SESSION_TRANSACTED);

然后在你的psuedo代码中:

代码语言:javascript
复制
  Message message = session.receive ..
  .. do valid message checks
  .. call HTTP endpoint..

  // now take action based on HTTP return code
  switch(httpReturnCode)
  case 200:
    session.commit();
  case .. invalid message returned from HTTP:
    .. produce message to DLQ for inspection
    session.commit();
  case .. http not available..:
    .. do some time delay, retry to http endpoint
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71111951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档