适用于 WebSphere MQ 的 BizTalk 适配器
Client-Based BizTalk Adapter for WebSphere MQ (MQSC Adapter) 是一种连接解决方案,使你能够在企业中使用BizTalk Server,并将 WebSphere MQ 用作所选消息传送标准。
以前,BizTalk Server和 WebSphere MQ 应用程序之间的一次性消息传送是由适用于 WebSphere MQ 的 Server-Based BizTalk 适配器提供的,该适配器要求 Windows 上的 MQSeries Server 作为BizTalk Server和非 Windows 队列管理器之间的中间服务器。 若要启用消息一次性传递,BizTalk Server和适配器要求 WebSphere MQ 使用 MSDTC (Microsoft 分布式事务处理协调器) 参与分布式事务。 MSDTC 支持仅适用于 Windows 上的 WebSphere MQ 服务器版本。
使用BizTalk Server,事务性消息传递 (一次性传递) 也可通过 MQSC 适配器获得。 MQSC 适配器与 WebSphere MQ 扩展事务客户端 (MQ 扩展客户端) 协同工作,可以实现此操作。 与 MQSeries 服务器一样,MQ 扩展客户端支持在 Windows 上使用 Microsoft 分布式事务处理协调器 (MSDTC) 分布式事务。 因此,适配器可以通过确保BizTalk Server和 MQ Extended-Client 参与分布式事务来保证消息的一次性和仅一次传递。
从 MQSeries 接收消息并将其提交到BizTalk Server时,适配器会启动 MSDTC 事务,并使用 SYNCPOINT 执行 MQGet,以便 MQSeries 参与事务。 适配器将此相同的事务上下文传递给BizTalk Server,以便在适配器向它提交消息时BizTalk Server参与同一事务。 提交消息后,适配器将提交事务。 将消息从 BizTalk Server 发送到 MQSeries 时,适配器会启动事务并使用 SYNCPOINT 选项执行 MQPut 操作。 BizTalk Server使用此同一事务从 BizTalk Server MessageBox 数据库中删除消息,然后适配器将提交事务。
还可以将 MQSC 适配器配置为在与 MQSeries 队列集成时支持非事务性消息传送。 为此,MQSC 适配器使用 WebSphere MQ Base-Client。 在这种情况下,适配器仅保证不会丢失任何消息。 在失败条件下,可能会发生消息重复。 因此,仅当使用来自 BizTalk Server 或 MQSeries 队列的消息的应用程序可以处理消息重复时,才应使用此配置选项。 为了防止消息丢失,MQSC 适配器首先通过设置MQGMO_BROWSE_FIRST和MQGMO_LOCK选项,使用浏览锁执行 MQGET。 然后,适配器将消息提交到BizTalk Server。 如果向BizTalk Server提交的消息成功,则适配器会使用 MQGMO_MSG_UNDER_CURSOR 选项执行破坏性 MQGet。 如果在将消息提交到 BizTalk Server 时失败,适配器会使用 MQGMO_UNLOCK 执行 MQGet,以便可以对消息执行其他操作。
适用于 WebSphere MQ 的 Server-Based BizTalk 适配器和适用于 WebSphere MQ 的 Client-Based BizTalk 适配器都具有自己的优势。 Client-Based 适配器不是用来替换 Server-Based 适配器。 相反,它为 BizTalk Server 与 WebSphere MQ 之间的集成提供了一个附加选项。
下表比较了基于客户端的 MQSC 适配器与基于服务器的 MQSeries 适配器。
功能 | 适用于 WebSphere MQ (MQSeries) 的 Server-Based BizTalk 适配器 | 适用于 WebSphere MQ (MQSC) 的非事务性 Client-Based BizTalk 适配器 | 适用于 WebSphere MQ (MQSC) 的事务 Client-Based BizTalk 适配器 |
---|---|---|---|
WebSphere MQ 依赖项 | 要求 Windows 上的 WebSphere MQ Server 与非 Windows 系统上的 WebSphere MQ 队列管理器通信。 这可以在BizTalk Server或运行 Windows 的远程服务器上。 | 要求在 BizTalk Server 上安装 WebSphere MQ 客户端,以便直接与远程系统上的 WebSphere MQ 队列管理器通信。 | 要求在 BizTalk Server 上安装 WebSphere MQ 扩展事务客户端,以便直接与远程系统上的 WebSphere MQ 队列管理器通信。 |
接收功能 | 是 | 是 | 是 |
静态发送端口 | 是 | 是 | 是 |
动态发送端口 | 是 | 是 | 是 |
接收时轮询队列 | 是,静态 MQGMO 等待间隔为 3 秒。 | 是,具有可配置的 MQGMO 等待间隔。 | 是,具有可配置的 MQGMO 等待间隔。 |
支持事务性或非事务性方案 | 仅支持事务方案。 非事务配置可用于测试/调试模式,但在生产环境中不受支持。 | 仅限非事务性。 | 仅限事务性。 |
保证消息的一次性和仅一次传递 | 是 | 否,在故障情况下,重复消息可能发生在 BizTalk Server 或 MQSeries 队列中。 应用程序负责处理重复的消息。 | 是 |
防止消息丢失 | 是 | 是 | 是 |
性能和可伸缩性特征 | 提供最高性能;更适合处理繁重的消息负载。 | 与基于服务器的适配器相比,性能较低,因为内置了防止消息丢失的开销。 | 性能高于非事务性适配器,但低于基于服务器的适配器。 |
接收方转换 | 执行 MQGET 时,将在配置时指定 MQGMO CONVERT 选项。 | 执行 MQGET 时,将在配置时指定 MQGMO CONVERT 选项。 | 执行 MQGET 时,将在配置时指定 MQGMO CONVERT 选项。 |
发送端转换 | 可以配置为转换为 Windows 上的 MQSeries Server 的代码页。 | 不适用 | 不适用 |
从业务流程和管道组件访问 MQSeries 标头 | 是 | 是 | 是 |
使用队列管理器功能进行分段 | 是 | 是 | 是 |
BizTalk Server和 MQSeries 服务器之间的安全性 | WINDOWS 上的 MQSeries Server 上的 COM+ 应用程序 (MQSAgent) 使用 COM+ 角色来允许可以访问它的用户。 在网络上,数据使用数据包隐私进行加密。 可以将 Windows 上的 MQSeries 服务器配置为使用 SSL,以使用非 Windows 系统上的远程 MQSeries 服务器。 | 在 MQSeries 客户端和服务器之间配置安全套接字层 (SSL) | 在 MQSeries 客户端和服务器之间配置 SSL |
基于某些匹配选项使用请求-响应发送端口从队列动态接收 | 是 | 否 | 否 |
BizTalk Server上的 MQSeries 通道配置 | 否 | 是,使用服务器连接通道。 | 是的,使用 Server-Connection 通道。 若要使用 SSL,必须使用客户端通道定义文件。 |