本节讲述了CUST自定义协议(以IBM MQ为例)穿透场景的创建过程,包括创建ESB项目、创建CUST协议相关的服务、部署、监控和运行。通过本节你将了解到如下内容:
- 如何创建CUST(以IBM MQ为例)协议穿透场景;
- 如何在Studio中测试运行开发的业务逻辑;
- 如何通过APIGateway Console部署IBM MQ相关的Module;
# 穿透说明
本穿透主要内容是:在APIGateway中以队列的形式接收一条来自IBM MQ中队列q_receive中的TextMessage类型的消息,穿透APIGateway后,再发送到IBM MQ中队列q_send。
# 创建ESB项目
- 打开ESB Studio,在资源管理器中,点击右键,选择"创建->ESB项目"菜单项,创建ESB项目,如下图所示。
在项目创建向导中,填写项目的基本信息,如项目名称等,如下图所示。
点击【下一步】,设置项目的引用库,这里使用缺省设置,如下所示。
点击【完成】按钮,完成创建ESB项目。创建ESB项目后,资源管理器如下所示。
至此,ESB项目创建完毕。
# 创建公共Module
在资源管理器中,选中project,点击右键,选择"创建->公共Module"菜单项,创建公共Module,如下图所示。
# 创建CUST Transport
1.在资源管理器中,选择"Transport->创建"菜单项,选中"CUST类型Transport",如下图所示。
2.修改Cust Transport 扩展配置信息,如下图所示。
- 选择协议类型为: IBMMQ;
- 扩展实现不做任何改变;
扩展属性配置如下:
属性标识 | 属性名称 | 属性值 | 属性描述 |
---|---|---|---|
hostName | 服务器地址 | 192.168.30.245 | IBM MQ所在服务器地址 |
port | 服务器端口 | 1444 | IBM MQ队列管理器监听服务器端口 |
queueManager | 队列管理器名称 | QM_test1 | 队列管理器名称 |
channel | 通道名称 | serverconn | 默认通道名称 |
messageModel | 消息模式 | P2P | 这里选用队列Queue形式 |
destination | 目标 | q_receive | 队列名 |
ccsid | 字符集编码标识 | 1381 | 字符集编码标识 |
acknowledge | 消息应答方式 | AUTO_ACKNOWLEDGE | 这里选择消息自动应答 |
# 创建CUST Endpoint
1.在资源管理器中,选择"Endpoint->创建"菜单项,如下图所示。
2.修改Cust Transport 扩展配置信息,如下图所示。
扩展属性配置如下:
属性标识 | 属性名称 | 属性值 | 属性描述 |
---|---|---|---|
hostName | 服务器地址 | 192.168.30.245 | IBM MQ所在服务器地址 |
port | 服务器端口 | 1444 | IBM MQ队列管理器监听服务器端口 |
queueManager | 队列管理器名称 | QM_test1 | 队列管理器名称 |
channel | 通道名称 | serverconn | 默认通道名称 |
messageModel | 消息模式 | P2P | 这里选用队列Queue形式 |
destination | 目标 | q_send | 队列名 |
ccsid | 字符集编码标识 | 1381 | 字符集编码标识 |
acknowledge | 消息应答方式 | AUTO_ACKNOWLEDGE | 这里选用自动应答 |
# 创建业务Module
在资源管理器中,选中project,点击右键,选择"创建->业务Module"菜单项,创建业务Module,如下图所示。
在"业务Module"向导中,输入业务Module的相关信息,点击【完成】按钮,创建业务Module,如下图所示。
业务Module创建完毕,展开新创建的业务Module,如下所示。
# 创建CUST业务服务
在资源管理器中,选中新建的业务Module"com.primeton.esb.project.restaurant",点击右键,选择"创建->CUST业务服务"菜单项,创建CUST业务服务,如下图所示。
在"创建CUST业务服务"向导中,输入相应的信息,点击【完成】按钮,完成CUST业务服务的创建,如下图所示。
编辑生成的CUST业务服务的文件。如下所示。
- 这里Endpoint选择刚才建立的名为:com.primeton.esb.project.common.endpoint 的 CUST Endpoint。
# 创建CUST代理服务
在资源管理器中,选中新建的业务Module代理服务项,点击右键,选择"创建->CUST代理服务"菜单项,创建CUST代理服务,如下图所示。
在"创建CUST代理服务"向导中,输入相应的信息,点击【完成】按钮,完成CUST代理服务的创建,如下图所示。
编辑生成的CUST代理服务的文件。如下所示。
说明
- 这里Transport选择刚才所创建的名为:com.primeton.esb.project.common.transport 的CUST Transport;
- 这里关联服务类型选择:业务服务;
- 这里服务名称选择刚才所创建的名为:com.primeton.esb.project.restaurant.bs (opens new window).ibmmq.bizService的业务服务;
- 这里协议类型选择:IBMMQ
点击保存按钮即可。
# 导出部署包
在资源管理器中选中"project"项目,点击右键,点击"导出(O)..."菜单项,准备导出该项目,如下图所示。
在"导出"窗口中,选择"ESB->导出部署包",点击【下一步】按钮,如下图所示。
在弹出的"导出部署包"窗口中选择这两个Module,并指定"保存位置",将部署包命名为CUSTDemo.ecd,点击【下一步】按钮,如下图所示。
点击【完成】按钮,会弹出"提示"窗口,显示"导出成功",表明已经成功导出这两个Module。
# 部署
使用开发账户登录开发门户,单击左侧导航树上的 “模型部署 >新建部署” ,弹出 “新建部署” 界面。
单击“新建部署“,显示新建部署页面,选取文件。
勾选“服务器”,点击“部署”,将模型部署到服务器。
部署成功后会显示相应信息,如下图所示。
# 发送消息
可手动在IBM MQ Exploer上面对队列管理器QM_test1下的队列q_receive发送消息;也可编写Java方法来发送消息,java 方法如下:
MsgSender .java
public void sendTextMsgByJms() throws JMSException{
MQQueueConnectionFactory queueFactory = new MQQueueConnectionFactory();
queueFactory.setCCSID(1381);
//queueFactory.setChannel("serverconn");
queueFactory.setHostName("192.168.30.245");
queueFactory.setPort(1444);
queueFactory.setQueueManager("QM_test1");
queueFactory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
MQQueueConnection conntion = (MQQueueConnection)queueFactory.createQueueConnection();
conntion.start();
QueueSession session = conntion.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = session.createSender(session.createQueue("q_receive"));
TextMessage oMsg = session.createTextMessage();
oMsg.setText("text message!");
sender.send(oMsg);
System.out.println("send sucess");
}
# 结果
可查看q_send队列中是否有一条"text message !"的消息,如果有,则说明成功地从队列q_receive接收到了一条消息,经过APIGateway后,再发送到了队列q_send中。 也可以设置ESB Server的日志等级(ESB Server安装路径/EOS/_srv/config/log4j-trace.xml),这样消息成功穿透APIGateway并发送后,ESB Server将会在后台打如下印出信息。