一. 下面的是后台记录的日志:
[0602 20:30:01 237 INFO ] [queueContainer-3] commons.component.ActiveMQComponent - MQ receive Message: key=BD,value="thirdBD:{\"accountId\":\"001101632119535\",\"amount\":270.00,\"businessOrderId\":\"150602201831701656\",\"cardNo\":\"6222021507001069767\",\"externalCode\":\"1001\",\"externalMemo\":\"交易成功\",\"id\":\"20150602201831722169\",\"status\":1}"
[0602 20:30:01 238 INFO ] [queueContainer-3] common.mq.LostOrderQueueMessage - 自动补单MQ接收的内容[thirdBD:{"accountId":"001101632119535","amount":270.00,"businessOrderId":"150602201831701656","cardNo":"6222021507001069767","externalCode":"1001","externalMemo":"交易成功","id":"20150602201831722169","status":1}]
[0602 20:37:44 033 INFO ] [queueContainer-7] commons.component.ActiveMQComponent - MQ receive Message: key=BD,value="thirdBD:{\"accountId\":\"001101632119535\",\"amount\":270.00,\"businessOrderId\":\"150602201831701656\",\"cardNo\":\"6222021507001069767\",\"externalCode\":\"1001\",\"externalMemo\":\"交易成功\",\"id\":\"20150602201831722169\",\"status\":1}"
[0602 20:37:44 033 INFO ] [queueContainer-7] common.mq.LostOrderQueueMessage - 自动补单MQ接收的内容[thirdBD:{"accountId":"001101632119535","amount":270.00,"businessOrderId":"150602201831701656","cardNo":"6222021507001069767","externalCode":"1001","externalMemo":"交易成功","id":"20150602201831722169","status":1}]
[0602 20:37:44 046 INFO ] [queueContainer-7] common.mq.LostOrderQueueMessage - 自动补单结果[第三方](订单号:150602201831701656 | [补单失败]订单号:150602201831701656对应的支付流水不是处理中状态!)
[0602 20:40:20 647 INFO ] [queueContainer-3] common.mq.LostOrderQueueMessage - 自动补单结果[第三方](订单号:150602201831701656 | 目前补单只限定于P2P、EXP、FACTORING、TB及未交易成功的新手标产品)
二. 多加资产问题出现过程,一步步还原现场
1、20:18创建的订单
2、去支付,发现支付处理中
3、充值处理处理中。落在超时支付表中
4、20:30轮训出结果,发送mq给汇金进行补单
第一次补单失败:
休息5分钟:
20:35开始第二次补单,补单成功,,,,发邮件异常,,,,,40分钟继续处理。。。。
5、20:37突然来了一个消息,
根据支付流水发现是成功的,直接返回
6、20:40补单,订单状态已经改成成功了,所以match不到,改订单为失败
7、下面看8:37分钟的消息怎么发生的
先去。9拉取info日志,发现只在8:30发过消息
说明不是pay,发重复消息
那么估计就是mq重发消息了,
去看下线上配置mq,发现没有配置超时时间,那么就是默认的1s
但是实际上是7秒,有问题
继续看日志,发现在8:30分 huijin失去jms连接
在8:37分钟重新连接上,所以之前的连接mq不知道是否成功,所以重发了
三. 总结
通过这个案例, 任何中间件和程序都是有可能出现不可预测的问题, 主要在程序设计过程中要注意几个点:
1. 方法一定要支持幂等性支持, 防止重复调用
2. 提交方法要预申请token, 防止多次提交
3. 网络连接的操作要有超时时间, 超过超时时间, 一定要断开
分享到:
相关推荐
本文主要探讨了一种经济而有效的解决方案:利用热敏电阻来防止电动机因过热而损坏。 电动机烧毁的原因多种多样,包括长时间运行导致的轴承磨损和润滑不足、工作环境中的灰尘和杂物堵塞散热通道、电动机质量问题、...
在处理OCR任务时,有时我们会遇到“为什么一定要多加两个字”的问题,这通常涉及到 OCR 的识别准确性和后处理步骤。 在OCR过程中,主要有以下几个关键步骤: 1. 图像预处理:这是OCR的第一步,包括调整图像尺寸、...
为了进一步巩固绘图技巧和解决方法,用户应不断总结个人的经验和技巧,及时解决绘图过程中遇到的问题,从而在实践中不断提高绘图效率。对于初学者而言,多加练习和向经验丰富的专业人士学习,也是提高绘图技能的有效...
* 数学建模是指使用数学方法和技术来解决实际问题的过程。 * 本资源提供了五百个使用C语言解决数学建模问题的实例,涵盖了多种数学建模问题的解决方案。 C语言编程 * C语言是一种高级编程语言,广泛应用于操作系统...
这篇研究可能详细探讨了如何利用Python编写ABAQUS脚本,以高效地处理复杂复合材料加筋构件的建模和预处理过程,以及可能遇到的技术挑战和解决方案。对于想要学习如何利用Python提升ABAQUS使用体验的工程师和研究人员...
《飞鸽传书:局域网通信神器与安装详解》 在信息技术日新月异的今天,局域网内的高效沟通成为了许多用户和企业的...而"肥的多加几个字"可能意味着在使用过程中,可以充分利用飞鸽传书的功能,让沟通更加丰富和生动。
该代码可以将汉字转全拼音。但是里面对多音字没有多加处理,但是都是常用音为主
解决这个问题的方法是删除多余的分号,确保`if`语句与它们应该控制的代码块正确关联。正确的代码应该是: ```c int a=3,b=2; if(a==b) { printf("a 等于 b\n"); } else if(a) { printf("a 小于 b\n"); } else { ...
在C语言编程中,语句的结构和语法的精确性至关重要。"while(表达式)"是一种控制流程结构,用于在满足特定条件时重复执行一段代码。...在遇到问题时,逐步调试和理解每一步的执行过程也是解决此类问题的有效方法。
在本项目中,“基于Python复合材料多加筋整体构件ABAQUS前处理二次开发”主要涉及的是使用Python语言对有限元软件ABAQUS进行前处理的定制化开发,特别是针对复合材料多加筋整体构件的建模和分析。复合材料因其独特的...
"C程序设计五百例--用c语言解决数学建模问题.pdf" 本资源共包含四个程序设计示例,分别解决了不同数学建模问题。下面是对每个程序的详细分析和说明: 程序 1:有1、2、3、4个数字,能组成多少个互不相同且无重复...
最近在项目开发过程中遇到如下问题:开发环境中设置的字体样式使用webpack打包后到生产环境不生效。如图: 打开控制台查看元素样式,发现在开发环境的时候”微软雅黑”被解析成unicode编码并且带着双引号, 但使用...
要解决这个问题,需营造现场氛围,团队协作,了解道具功能,多加练习,有效利用名片、海报等工具。 5. **不满奖金制度**:不合理或不公平的奖金制度可能导致销售团队的不满。应通过收集意见,制定公正的奖金制度,...
本文实例讲述了Python实现的当前时间多加一天、一小时、一分钟操作。分享给大家供大家参考,具体如下: 首先看下,datetime的使用 >>> import datetime >>> print datetime.datetime.now() 2017-07-15 15:01:24....
通过教学活动,让学生探索、发现并解决问题,从而学会用所学的知识运用到生活中去实践,并且培养了学生分析问题、解决问题以及表述能力。同时学生在学习中体会到了探究、发现问题和灵活地解决实际问题的乐趣,充分...
解决这个问题是非常重要的,因为风扇转速的不正常可能会导致很多问题,严重的可能导致系统自动关机甚至会使 CPU 温度过高而烧毁 CPU 等硬件。 解决 CPU 风扇错误的方法可以分为以下几个步骤: 首先,检查一下风扇...
#### 双组份灌封胶灌封过程中出现的问题及解决方法 1. **固化后的主剂太软/表面过粘** - **解决方法**:首先尝试在60-80℃的条件下进行快速固化1-2小时。如果仍然存在固化不充分的情况,可能是由于混合比例不准确...