ibm mq api_使用IBM API Connect和IBM MQ将后端系统连接到API
IBM®API Connect与IBM MQ之间的集成对于可靠的消息传递至关重要。 到目前为止,这种集成还不适用于使用后端系统通过MQ进行通信的环境。 由于API Connect可以与IBM MQ集成的新自定义策略,您可以无缝创建面向公众的API以与您的后端系统一起使用。 此定制策略捕获了IBMDataPower®和MQ的现有兼容性。
本教程说明了如何使用我们开发的定制策略来将API Connect实例与MQ队列管理器集成在一起。 使用此策略,由API Connect管理的API可以针对MQ队列。 API层可以很容易地与使用IBM MQ公开的后端系统进行交互。 在此过程中,调用API时,API Connect会生成SOAP信封并将SOAP信封发布到MQ队列。
在完成本教程之前,您必须对API Connect有基本的了解 。 您还必须具有一个IBM DataPower Gateway作为API运行时,以及一个IBM DataPower Gateway可访问的MQ队列管理器。
API Connect中的策略
通过使用API Connect组装工具,您可以向API的运行时行为添加转换和逻辑。 您可以使用该程序集创建具有逻辑结构的复杂流,例如if
和switch
语句。 您还可以创建数据处理机制,例如字段编辑,JSON到XML和输入到输出映射。 这些操作称为策略 。 您可以通过将图块拖动到装配体来连接和组织它们。
API Connect提供了一种方法来接收API请求,然后启动一个或多个HTTP服务。 但是,我们希望API请求启动MQ SOAP服务而不是HTTP服务。 以下步骤说明了此解决方案的工作方式:
- 使用者使用HTTPS调用API。
- SOAP消息是使用来自初始API请求的信息创建的。
- SOAP消息放在请求队列中。
- MQ服务从请求队列获取消息,并将响应放入应答队列。
- MQInvoke策略从队列获取响应。
- 如果未指定答复队列,它将返回MQMD标头。
下图说明了此解决方案中的步骤。 可以通过使用API Connect中的“映射”策略或通过创建SOAP Envelope Generator用户定义的策略来构造SOAP消息。
MQInvoke用户定义的策略
为了解决与API Connect和MQ集成时发现的挑战,您可以使用用户定义的策略。 在本教程中,我们使用并描述了MQInvoke策略,您可以从GitHub下载该策略。
通过在配置面板中使用以下参数定义MQInvoke策略:
- 队列管理器 。 将此变量设置为IBM DataPower中的IBM MQ队列管理器对象或IBM MQ队列管理器组对象的名称值。
- 队列。 将此变量设置为所选队列管理器中的请求队列的名称。
- 回复队列。 将此变量设置为所选队列管理器中答复队列的名称。 如果消息流不打算同步,则将此值保留为null或
" "
。 - Backoutq。 如果需要,将此变量设置为所选队列管理器中的回退队列的名称。 如果将Replyqueue设置为null或
" "
,则该策略不会将错误消息放入回退队列。 您必须在此处而不是在DataPower MQ对象中定义回退队列。 - 超时。 输入时间(以毫秒为单位),之后该策略将声明队列管理器不可达,并返回到达408超时的响应代码。
启动用户定义的概要文件时,它将当前消息主体放入在DataPower(QM对象)中注册的队列管理器上的指定请求队列中。 如果答复队列为空,则此请求为单向请求。 否则,请求是同步的。 对于同步请求,答复队列名称上应有响应。 轮询应答队列,直到收到具有与请求匹配的CorrelId的消息为止。 响应消息的主体被发送回API使用者。 对于将消息放入MQ队列时的单向请求,将响应返回给API使用者。
创建DataPower扩展
要创建DataPower扩展,请登录到IBM DataPower。
建立网域
创建一个域,您将在其中开发DataPower扩展和用户定义的策略。 该域仅用于创建MQ对象。 您可以稍后将其删除。
- 在搜索字段中,输入
domain
。 - 从结果中,单击“ 应用程序域” 。
- 在“应用程序域”窗格中,单击“ 新建” 。
- 对于名称,输入
MQ
。 - 点击应用 。
- 保存配置。
- 单击右上角的当前域,然后选择MQ域 。
添加队列管理器对象
- 在搜索字段中,输入
Queue
。 - 在搜索字段下的选项中,单击IBM MQ队列管理器 。
- 点击新建 。
- 输入以下属性。 在此示例中,我们使用显示的值。 您自己的值可能会有所不同。
- 对于名称,输入
QM1
。 - 输入主机名,格式为
xxx.xxx.xxx.xx:xxxx
。 - 对于队列管理器名称,输入
QM1
。 - 对于用户名,输入
dpuser
。 - 单击XML Manager的加号( + )。
- 对于名称,输入
- 在“配置用户代理”窗口中,为Name输入
MQUserAgent
。 - 点击应用 。
- 保存配置。
添加DataPower扩展
DataPower扩展要求您在local:// ext /目录下创建一个控制文件以指定其行为。 在这种情况下,我们使用DataPower扩展作为一种机制来部署用户定义的策略所需的对象。 因此,扩展文件不需要必需的扩展标签。
要添加DataPower扩展:
- 打开一个文本编辑器。
- 添加以下行:
<extensions>
</extensions>
- 用
extensions.xml
名extensions.xml
保存文件。 - 在“文件管理”中,对于本地文件夹,单击“ 操作”链接,然后单击“ 创建子目录” 。
- 输入
ext
并单击Confirm Create 。 - 单击操作 。 选择Upload Files ,然后找到您刚刚创建的
extensions.xml
文件。
下图显示了我们创建的扩展文件。
导出配置
- 在搜索字段下的选项中,点击导出配置 。
- 选择“ 导出数据”以从当前域中选择配置 ,然后单击“ 下一步” 。
- 在“导出配置”窗口中,完成以下设置:
- 对于文件名,输入
mqextension
。 - 在“可用对象”框中,选择“ IBM MQ队列管理器组” ,然后单击向右箭头( > )将选择内容移到“ 选定对象”框中。
- 对于文件名,输入
- 点击下载 。
现在,您可以按照以下步骤中的说明,在Cloud Manager中添加作为DataPower服务扩展下载的压缩扩展文件。
将扩展添加到API Connect
- 登录到Cloud Manager。
- 单击服务 。
- 向下滚动到DataPower Services,然后在“网关”部分中,单击“ 配置”图标。
- 在配置窗口中,向下滚动到API Gateway Extension ,然后单击Browse 。
- 找到您下载的压缩扩展文件。
- 点击保存 。
添加扩展名时,您会看到一条刷新消息,显示了几分钟。 添加扩展名后,您会看到一条消息“ ACTIVE”。
将策略导入API Connect
- 要使用这些策略,请将压缩文件导入API Connect。 导入后,该策略将显示在程序集中,如下图底部所示,可以使用了。
- 根据需要将策略拖到程序集中多次。 磁贴的每个实例都拥有自己的独特配置。
- 要配置MQInvoke策略,请输入所运行的MQ实例的详细信息:
- 对于queuemanager,输入
MQDAC01
。 - 对于队列,输入
API1IN
。 - 要获取答复,请输入
API1OUT
。 - 对于backoutq,输入
API1OUT
。
- 对于queuemanager,输入
- 测试API。
在DataPower和MQ之间启用SSL以确保安全
将DataPower连接到MQ系统时,请使用安全套接字层(SSL)。 出于安全原因,在导出DataPower配置时,将省略加密材料。 因此,您必须以稍微不同的方式处理SSL:
- 在API Connect Cloud Manager中创建传输层安全性(TLS)配置文件 。
- 根据需要放置信任库和演示者证书。
- 如上一节中所述,当您创建MQ对象时,请将SSL客户端配置文件设置为您创建的TLS配置文件。
随附的DataPower扩展包含对在API Connect Cloud Manager中配置的TLS配置文件的引用。 如果出于某种原因需要调整此TLS配置文件,则可以在Cloud Manager中的TLS配置文件下查看该配置文件 。
结论
本教程介绍了一种通用的解决方案,可以帮助您解决集成API Connect和MQ的挑战。 通过使用如上所述的用户定义策略,您可以调用API,将此SOAP信封放入请求队列中,启动MQ服务,然后解析SOAP响应的主体。
翻译自: https://www.ibm.com/developerworks/library/mw-1611-hutchinson-trs/index.html