两个应用之间交互怎样才算做健壮

今天重新review了一下之前写的代码,脱离开具体的业务逻辑:

A应用与B应用消息交互,A先发消息给B,B处理后发另一个消息给A,

站在A应用的立场来考虑,怎么设计这个系统算做健壮,我们分情况来说,

第一种情况,A应用发送给B应用的消息有问题(例如因为A应用自身的bug导致必填字段为空),或B应用处理消息的逻辑出bug了。

      最终的结果是B应用没有成功消费到消息。

解决的办法是A增加重试机制,在页面中增加一个后台重发按钮,可以根据必要的值(比如单据号和单据类型)重新组装消息发给B,

或者自己建一个message_retry表,保存关键字(比如单据号和单据类型)作为后来重发的依据

第二种情况,B应用发送给A应用的消息有问题(例如因为B应用自身的bug导致必填字段为空),或A应用处理消息的逻辑出bug了。

      最终的结果是A应用没有成功消费到消息。

不要求B应用有同样的重试机制,A应用自己做一个容错处理,比如自己在页面中增加按钮来处理激活对应的表的修改,必要是可以调用B应用的RPC接口来查询必要的信息

站在A应用的角度,这样看上去我们用一个词来形容,就是“严以律己,宽以待人”

为什么要这样做呢,这里不展开沟通的问题,总之多个应用多个团队维护,很难要求别人写代码做到健壮(有时候推动别人把事情做完可以,推动对方做好很难,做完和做好是两个概念)

如果A应用做到这么苛刻的程度,这个系统就非常健壮了,在后续处理异常问题的时候得心应手。

看完后不禁为自己的代码感动的落泪。

时间: 2024-12-13 01:10:01

两个应用之间交互怎样才算做健壮的相关文章

Android 两个Activity之间信息的交互

出处:http://blog.csdn.net/veryitman/article/details/6611138  感谢原文作者,整个逻辑很清楚,这备份下 多个 Activity 之间可以通过 Application 共享数据,在这里我就让两个 Activity 共享 Handler(更新UI,我一般使用 Handler),主 Activity 中更新 UI,另一个 Activity 发送更新UI的消息.这样就达到在主Activity更新UI的目的.好吧,具体看代码! 1. 主 Activit

两个GridView之间数据转移,交互,实现拖拽,网易新闻列表效果实现

两个GridView之间数据转移,交互,实现拖拽,网易新闻列表效果实现 摘要 :android 高仿频道管理网易新闻. 新闻频道增删,排序,以及一些动画的实现 可拖动的GridView 地址  :  http://www.itnose.net/detail/6035345.html

Android-计算两个日期之间间隔的天数

要计算两个日期之间间隔的天数,必须把两个日期转换成统一的时间戳,然后计算其毫秒差,再将毫秒差转换成天数. System.out.print("开始时间:"); String str1 = beginTime; // "yyyyMMdd"格式 如 20131022 System.out.println("\n结束时间:"); String str2 = _endTime; // "yyyyMMdd"格式 如 20131022 S

怎样才算会一门编程语言(如果你已经会了一门语言, 并且想一直会这门语言, 请在工作持续使用。如果没有机会使用, 自己给自己创造机会)

今天, 同事问我会不会Python, 我犹豫了一下:不会. 实际上我曾经学习过这个语言,当时还用它写了些小工具, 可现在我对这个语言的印象只剩下它那特殊的缩进格式了. 由此思考怎样才算会一门语言?我想每个程序员都接触过多门语言 , 那么究竟怎样才算会这门语言了呢? 会一门语言, 当需要它时, 应该能很快用该语言解决某个问题, 这个是最基本的. 如果深入一点, 真正会一门语言, 我觉得需要满足以下几点: a. 有超过一年的实践经验 b. 理解语言背后的机制, 最好阅读过该语言标准库的部分源码 c.

用VBA计算两个日期之间的工作日(去掉周末两天)

最近公司HR和Finance想算员工的工作天数,想让我帮忙写些VBA,自己从网上找了下代码,自己再改改,以下来自网络. 计算两个日期之间的工作日,用VBA,因量大,最好用数组做 Sub kk() Dim arr, i&, j&, m& arr = Sheet2.Range("b3:f4") For i = 1 To UBound(arr) m = 0 For j = arr(i, 1) To arr(i, 3) If Weekday(j) <> 1

用来实现对紧邻的相同的标签元素的内容和两对标签之间的非标签内容进行合并

源文件: <?xml version="1.0" encoding="UTF-8"?> <Body> <Title>4月7日凌晨5时,近300名穿着"警察"制服</Title> <ReportTime type="absTime">2014年4月11日07:00</ReportTime> <Content> <Paragraph>

两个iframe之间的异步通信

艾伦说过,一切学习都是从模仿开始,我也不例外.下面我要说的是两个页面之间的通信问题. 假设现有a.html 需要与b.html进行数据交互,a通过iframe加载b.html a.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <iframe src="b.html" style=&quo

C++计算两个日期之间的天数

计算两个日期之间的天数的思路: 首先,判断输入的年份是不是闰年.年份是否相同?月份是否相同?日是否相同? 日月年有三种可能的情况: 同年同月.日数相减就出来了. 同年不同月.计算日期小的月份到年初的天数,计算日期大的月份到年初的天数.再把两个日期向减 不同年.先计算中间相隔几年,计算较小的日期到年底有多少天,再计算较大的日期距年初有多少天,将三个数向加. 代码如下: 1 #include<iostream> 2 #include<CString> 3 #include<cma

计算两个日期之间的工作日(去掉周末和节假日)

1 package com.utouu.uphone.commons; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.ArrayList; 6 import java.util.Calendar; 7 import java.util.Date; 8 import java.util.Iterator; 9 import java.util.List; 10