ESB提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口,但是ESB并没有http请求效率高。
废话就不多说了,先看看怎么实现的吧。
首先确定请求报文的格式,以我在项目中的报文为例:
CMercPerformanceMgmt
queryStoreScores
SFS
5136fa413f96493391d6075f654d4d83bcfbbc57bd8e47e5
0224136722
1
5
0
这就是一个接口的请求报文,一般报文格式是固定的,需要改动的只是报文的节点,被调用方接口也是根据节点筛选出所需要的请求参数,另外,报文是用POST方式提交,参数是封装在body中的。
下面是被请求接口:为了各位看的明白些,我狠添注释,这样代码和注释一起看比较方便
//RequestMapping,这个是spring中截获请求的url作用
@RequestMapping(“/my_product_review”)
public String getPendingOrderItems(HttpServletRequest request, HttpServletResponse response)
throws IOException {
//这里是从request中取到报文,getMbfRequestInput方法会在下面贴出代码
MbfRequestInput mbfRequestInput = getMbfRequestInput(request);
//根据报文中参数创建请求对象,这里只要PendingOrderItemDTO 中的属性跟请求报文的节点一致即可(也就是报文中 中的节点名称)
PendingOrderItemDTO requestDTO = (PendingOrderItemDTO) mbfRequestInput
.getMbfBody(PendingOrderItemDTO.class);
//封装返回对像的报文
MbfResponseWrapper mbfResponseWrapper = new MbfResponseWrapper(
mbfRequestInput.getMbfHeader());
// 处理请求参数,orderVo为最终返回报文的类