§ 本文目标
通过学习本文,可以掌握微服务通讯配置
作为客户端通讯需使用接出适配器。此处主要指微服务作为客户端发起服务请求调用
§ 练习场景
配置http+json的客户端
本示例配置一个端口为7777的HTTP通讯接出适配器,发送json格式的报文到本地的7777端口的网关微服务接入
§ 操作步骤
§ 设置通讯适配参数
在网关工程gateway的“公共定义”路径下,双击"通讯适配",打开“通讯适配”视图。如下图所示

选择“接出适配器”,右键“新建 短连接客户端接出适配器”,弹出对话框如下

填入接出适配器名称“shortClientOutAdaptor”,点击确定,打开接出适配器配置页面,如下图所示
注:此处名称为英文,且需要唯一

上图中,主机为要发送请求的主机IP,此处填“127.0.0.1”,端口“7777”,超时时间为60秒,通讯协议选http,请求方式为POST,请求数据类型为text/xml; charset=UTF-8,uri为**/api/bsp/json**,除此之外其他为非必输项。socket时,下面的系列参数不需要填
保存接出适配器配置信息
§ 配置请求及响应报文
发送报文需要先拼包,下面给出json拼包示例
在网关工程gateway的“公共定义”路径下,选择“报文管理”,右键出现下来菜单,依次选择“新建”,“新建报文文件”,如下图所示

点击“新建报文文件”,弹出对话框,填入jsonPack,如下图所示

点击“完成”,创建jsonPack.mfd文件
本例配置JSON原始报文如下

打开jsonPack.mfd文件
报文类型选03-JSON,编码选需要的字符集编码,本例中使用UTF-8,自动拼包选择:“false”。如下图:

步骤:
- 右键点击“报文”,选择“字段”,在字段名称中键入:ieProductManager,字段类型选择“String”,在拼包表达式或字段默认输入框中输入字段值:"尹敬",字段描述中键入:"产品研发经理",新建[ieProductManager]字段
- 重复步骤1,创建[ieCustomName]字段
- 右键点击“报文”,选择“分组”,在分组名称中键入:modifyTime,新建
分组 - 右键点击“modifyTime”分组,选择“字段”,在字段名称中键入:date,字段类型选择“String”,在拼包表达式或字段默认输入框中输入字段值:"1",字段描述中键入:"日",新建[date]字段
- 重复步骤4,创建[month]、[month]和[year]字段
- 再右键点击“报文”,选择循环,在循环名称中键入:ieProblem,循环变量键入:i,循环次数键入:1,新建
循环 - 再右键点击“ieProblem”循环,选择“字段”,在字段名称中键入:ieProjectName,字段类型选择“String”,在拼包表达式或字段默认输入框中输入字段值:"长沙银行接口自动化及挡板工具项目",字段描述中键入:"项目名称",新建[ieProjectName]字段
- 重复步骤7,创建[ieCode]、[ieCommitterCode]、和[ieCommitTime]字段
- 重复步骤1,创建[tempId]字段
配置结果如下图

因为JSON报文是自描述性报文格式,报文中包含字段名和值,所以可以使用自动拆包,避免繁琐的配置手动拆包报文格式
报文类型选03-JSON,编码选需要的字符集编码,本例中使用UTF-8。自动拆包选择:“true”。如下图:

§ 配置通讯映射
配置通讯映射如下图所示,如果不需要调用微服务,beanId可填“”

§ 调用客户端通讯工具类CommunicatUtil.java的静态方法send发送请求
配置完毕之后,可通过CommunicatUtil类的静态方法send实现报文的发送。
类CommunicatUtil的全名为: cn.com.yusys.yusp.bsp.communication.CommunicatUtil
adapterName填入上面配置的接出适配器名称,mappingId填入映射ID,context填入上下文信息
本例子中创建了一个SendResource类及SendService类,来模拟Spring容器环境


之后启动注册中心服务、UAA及gateway服务,在Swagger中即可测试,测试结果如下图所示

部分测试日志截图:

§ 示例工程
附上整个gateway示例工程
gateway.rar
← 通讯转换开发-网关通讯配置 组件API合集 →