消失的消息

昨天,一个上线已久的供应链金融项目出现异常,经过一整天的排查,终于定位了两个问题的原因,并通过重启服务解决了其中的1个问题,另一个问题需要发起上线流程,通过上线才能解决。这两个问题,分别命名为【消失的字段】和【消失的消息】。在正式阐述问题之前,先描绘一下系统概况,以便读者更容易理解文中描述的问题排查逻辑,问题排查逻辑是这两篇文章的重点。

消失的消息_第1张图片

上图虚线框内是供应链金融项目的服务,包括:银行对接服务(bank-adapter)、贷前服务(preloan)、贷中服务(onloan)和贷后服务(postloan),bank-adapter服务属于外联服务,主要和银行进行对接。

橙色线条表示业务服务(贷前、贷中和贷后)通过银行对接服务bank-adapter向银行主动发起查询,包括查询:企业准入结果、授信结果、融资申请结果、放款结果和还款结果。

绿色线条表示银行主动通过银行对接服务bank-adapter向供应链金融平台推送消息,bank-adapter服务收到消息进行校验解码之后发送到消息队列MQ,业务服务(贷前、贷中和贷后)监听消息队列实时获取最新的推送消息,进行业务处理。

目前系统出现了两个问题,一个是业务服务主动请求融资申请结果,发现没有审批额度信息——【消失的字段】;另一个是贷中服务和贷后服务无法从消息队列获取最新的消息——【消失的消息】。

本文主要描述【消失的消息】问题以及问题排查过程,并给出问题解决方案。

一、问题描述

用户在供应链金融平台的融资申请列表页面始终看不到最终的融资申请结果,但是银行那边确定将融资申请结果推送过来了。

二、问题排查(按照绿色服务请求路线进行排查)

1、通过查看bank-adapter服务的日志,可以确定bank-adapter已经收到了银行发送过来的融资申请结果,并且已经成功发送到消息队列。那么,问题范围就缩小到onloan服务为什么没有收到消息了?

2、查看onloan服务的日志,查找关键字【消息监听】,发现没有一条日志出现,说明onloan服务未消费到一条消息。

3、检查onloan的生产配置,其中rabbitmq的配置都是正确的。那么推测只有一种情况了,就是onloan服务正常,但是与消息队列的连接出现了问题。

4、打开RabbitMQ的管理页面,找到对应的队列,并进入队列详情页面,发现Consumers一栏为空:No consumers。

消失的消息_第2张图片

同时,还查看了其他4个银行消息推送队列,发现贷前服务preloan监听的队列有consumer,贷中onloan和贷后postloan服务监听的两个队列都没有consumer。

5、查看贷后服务postloan的日志,同样查找关键字【消息监听】,发现只有今年早前有两条消费日志,而实际银行推送的消息是一直有的,说明贷后服务postloan与消息队列的连接也断了。通过日志信息与RabbbitMQ管理台的consumer信息,判定贷中服务onloan和贷后服务postloan的队列消费功能都失效了。

三、解决方案

由于日志没有任何关于服务与消息队列断掉的异常信息,无法判断自动断掉连接的原因。临时解决方案:重新启动贷中服务onloan和贷后服务postloan。重启还是很有效的,重启成功之后,通过观察日志知道服务正常消费队列消息了,平台页面也展示了最新的推送消息。

你可能感兴趣的:(java,json,rabbitmq)