ESB文档库 ESB文档库
00 概述
01 产品安装指南
02 快速入门指南
03 ESB Studio使用指南
04 企业服务总线使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 FAQ
无

在中介服务中,如果需要进行业务回调,希望回调地址可配置,可参考如下操作

示例Demo:dynamicCallbackAddress.zip

1.创建回调地址配置表,并配置好回调地址

回调地址需要在库中配置,回调地址的表名为:callback_address,以mysql为例,表结构如下:

CREATE TABLE CALLBACK_ADDRESS (
    id             int(11) NOT NULL AUTO_INCREMENT,
    client_id      varchar(128) NOT NULL,
    operation_code varchar(128) NOT NULL,
    ip             varchar(128) DEFAULT NULL,
    port           varchar(10)  DEFAULT NULL,
    uri            varchar(512) DEFAULT NULL,
    create_time    datetime     DEFAULT CURRENT_TIMESTAMP,
    update_time    datetime     DEFAULT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

字段及填写说明:

  • id: 主键;
  • client_id: 客户端id,必填;
  • operation_code: OperationCode,必填;
  • ip: 回调地址ip,必填;
  • port: 回调地址port,必填;
  • uri: 回调接口,必填;
  • create_time: 记录创建时间;
  • update_time: 记录更新时间;

回调地址配置示例:

2.开启动态地址配置监听器

找到Studio安装目录,进入到studio/server/EOS/_srv/config/system下,打开handler-startup.xml文件,将动态回调地址配置监听注释放开(如下图所示), 表示在server启动时,将callback_address表中数据加载到内存中,目的是在获取回调地址时,提高查询效率。

重启Server
创建好callback_address表并设置好回调地址, 将handler-startup.xml文件中的动态回调地址监听开启后,需要重启server,以保障配置的回调地址加载到内存中。

3.增加回调地址的依赖包

在服务编排中,获取回调地址的Java方法图元需要使用到com.primeton.esb.governance.service.policy-8.0.0.0.jar包,按下图将该包添加到依赖中

选择添加外部JAR之后,在弹出的选择框中,进入到Studio安装路径下:studio->server->plugin,选择com.primeton.esb.governance.service.policy-8.0.0.0.jar包,点击打开,再点击应用并关闭即可。

4.中介服务编排

4.1. http业务服务

在Endpoint中创建http类型的endpoint,如下所示:

在业务服务中创建http业务服务,选择上述创建好的endpoint,在URI中输入:/helloWorld,点击保存。

helloWorld业务服务如下,返回一个字符串:

在中介服务编辑面板空白处双击,弹出的中介流属性设置对话框中,变量定义列表中,新增businessOut变量,作为接收http业务服务的返回结果,变量类型为:ITMessagePayload

拖拽Http业务服务图元至右侧编辑面板,右键选择属性,在弹出的属性设置对话框中,业务服务框中,选择右测的浏览,选中上述创建好的http服务,确定之后 , 在下方的参数配置表中,返回值一栏,值列中,填入定义好的businessOut,作为返回值的接收参数。

使用连接线连接开始和http业务服务图元

4.2.获取回调地址Java方法图元

在空白处双击,弹出的中介流属性设置对话框中,变量定义列表中,新增address变量,作为获取回调地址返参的接收变量,类型为:HttpDynamicEndpointRef

将Java方法图元拖拽到右侧服务编辑区域,修改该图元名称为:获取回调地址,然后右键,选择属性,在弹出的设置属性界面中,点击选择java方法项右侧的浏览按钮。

点击浏览后在弹出选择类对话框中,输入框输入:DynamicCallbackAddressUtil,然后选择在下方匹配类,点击下一步,接着选中getDynamicCallbackAddress方法,然后点击完成即可。

点击完成后,在返参中,值列中输入:address,作为接收获取回调地址的返参。

4.3.设置回调地址

重要提示
获取回调地址的Java方法图元,最终返回的结果包含配置好的回调地址信息,因此调用回调服务时,用户需要根据实际需要,构造具体类型的ITipMessagePayload对象(如:WS类型,Http类型的ITipMessagePayload对象),做为回调服务的入参,并将回调地址设置到该对象中去。为了方便起见,示例以Http类型的服务做为回调服务。

如下图所示:在Java包中创建CallbackInfoHandler类,类中的setCallbackAddress方法接收三个入参,分别是获取回调地址Java方法图元的返回结果、 调用Http业务服务时的入参、Http业务服务的返回结果。该方法返回一个含有Http业务的结果,以及回到地址的ITipMessagePayload对象,该对象作为回调服务的入参。

实现好设置回调地址的类以及方法后,在编辑中介服务面板空白处双击,添加result变量,做为接收设置回调地址的Java图元的返参。

拖拽一个Java方法图元,并命名为设置回调地址,然后右键属性,在设置属性界面,选择java方法项的右侧,点击浏览,在弹出的设置对话框中,输入框输入:CallbackInfoHandler,选择下方匹配项

完成上述操作后,在Java方法属性对话框中,参数配置列表中,值列中,填入如下参数,作为设置回调地址方法的入参,以及接受的返参。

4.4.回调服务

创建http类型的回调服务,如下图所示:

callbackService回调服务将Http业务服务的返回值拿到,并将回调服务的结果组合一并返回,回调服务的实现如下:

在中介服务编排界面,拖拽一个http业务图元到右侧编辑面板,并重命名为回调服务,右键属性,在打开的属性设置对话框中,选择创建好的Http回到服务,并在参数列表中填入入参和返参。

使用连接线连接获取回调服务——设置回调地址——回调服务——结束

再使用连接线连接获取回调地址——结束,双击该连接线,在弹出的设置对话框中,填入条件判断,当回调地址的返回值address为空时,表示没有配置回调地址,此时直接结束。

最终的服务编排的流程图如下:

5.服务调用

编辑好中介服务后,进行服务调用。

5.1首先创建Http类型的代理服务,关联服务类型选择中介服务,如下图所示:

5.2.创建Http类型的Transport,如下图所示:

5.3.配置好Server后,点击按钮,启动服务,启动成功后,在Postman中输入:http://127.0.0.1:9090/server ,并在Headers中增加ClientId,OperationCode参数,该参数的值应和callback_address表中配置的值一致,点击send之后,将返回业务结果和回调服务结果,如下图所示:

← 3.6.8 动态路由策略加载实现 3.6.10 业务校验开发示例 →