MQ消息疑似丢失问题排查方法

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

MQ消息疑似丢失问题排查方法

MQ消息疑似丢失问题排查方法

现象

某客户发现,发送到集成云消息订阅主题的数据,没有被集成云消费生成单据,且调用方没有收到异常日志。怀疑是发送后消息丢失了,可以参考以下思路进行排查。

检查方案错误日志

根据具体的业务集成场景,到对应的“单据消息任务监控”/"启动方案执行日志“/”服务流程实例“/”API集成“查看日志,如果报错了会有日志记录,如果没有触发继续往下排查。

检查是否接收到消息

在【消息集成】-【消息集成监控】-【消息接收】检查是否成功收到对应消息,可以通过“消息摘要”字段快速过滤数据;如果没有配置摘要模板或更早之前的版本,需要在t_iscb_mq_data_received表查询fdata字段或fdatatag字段(超过50个字符,存储在fdata_tag字段中)。

如果消息列表没有相关数据,需要检查MQ消息是否发送成功。


检查消息是否发送成功

通过集成平台发送的MQ,可以在【消息集成】-【消息集成监控】-【消息发送】列表找到是否有对应记录。由于集成平台在发送MQ前会存储到数据库,还需要检查数据存储成功但消息并未发送成功的情形,这种需要在monitor查看是否有错误日志。



如果是业务自行编写的MQ发送代码,需要检查发送时是否有异常,确保消息发送到了MQ。

当以上情形都排查完后,排查一下MQ服务器和消费者的问题。

检查是否有其他消费者

以RabbitMQ为例,先根据发布或订阅主题的编码,找到队列名,编码即为队列名,如下,队列名即“lwr_test”。

 


去管理控制台的官网,根据队列名,查看对应的消费者个数,这里发现有4个消费者

 


在monitor查看节点个数,只有3个。


 

另外,也可以在集成平台服务器实例列表查看实例个数,如下图。



对照一下rabbitmq和monitor实际注册节点的个数,以及实例IP是否一致。如果不一致,可能是混入了其他的消费者,把消息收走了。

修改MQ队列名称用于排查问题

如果以上都无法判断,可以尝试修改队列编码,并重新禁用和启用消息订阅主题,观察是否能解决问题。

结论

MQ本身还是比较可靠的,以往怀疑MQ消息丢失时,极有可能是MQ消息被其他不相关的消费者消费了。例如:测试环境连了正式环境的消息服务器。因此测试环境和正式环境的数据隔离非常重要。

关于环境迁移时的数据脱敏问题参考:https://club.kdcloud.com/article/45250


MQ消息疑似丢失问题排查方法.docx

MQ消息疑似丢失问题排查方法

MQ消息疑似丢失问题排查方法现象某客户发现,发送到集成云消息订阅主题的数据,没有被集成云消费生成单据,且调用方没有收到异常日志。怀疑...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息