MQSCorrelationSetOrchestrationWithSolicitResponse(BizTalk Server 示例)

MQSCorrelationSetOrchestrationWithSolicitResponse 示例演示如何使用 MQSeries Server 而非 BizTalk Server 生成的相关标识符。

本示例的用途

业务流程为消息标头中的 MQMD_MsgID 属性发送一个空值的消息。 MQSeries 生成 MessageID 和 CorrelationID,并返回一条消息,其中值分配给 MQMD_MsgID,MQMD_CorrelId作为适配器请求响应发送端口的一部分。 业务流程使用生成的相关标识符来初始化相关集,并通过检查消息的 MQMD_CorrelId 属性,在后续接收位置跟踪相关集。 适配器还会将相关标识符分配给 BizTalk_CorrelationID,也可以在业务流程中使用。 有关将相关标识符与适配器配合使用的详细信息,请参阅 使用请求-答复关联消息

重要

如果来自 MQSeries Server 的消息在相关标识符之前到达,则使用此方法的业务流程可能出现问题。 确保将您的业务流程设计为允许 MQSeries Server 具有足够的时间返回相关标识符。 此示例未考虑可能出现争用情况。

本示例所在的位置

<示例 Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse

下表显示了本示例中的文件及其用途说明:

File 说明
MQSCorrelationSolicitResponse.btproj、

MQSCorrelationSolicitResponse.sln
应用程序的项目和解决方案文件。
MQSCorrelationSolicitResponse.odx 应用程序的 BizTalk 业务流程文件。
MQSCorrelationSolicitResponse.snk 强命名密钥文件。
Setup.bat 生成并初始化本示例。

如何使用本示例

若要创建应用程序,必须完成以下步骤:

  • 创建两个 MQSeries 队列。

  • 设置 BizTalk Server 接收位置和发送端口。

  • 启用接收位置。

  • 启动发送端口。

  • 创建相应文件夹。

  • 修改业务流程。

  • 部署、绑定并启动业务流程。

    如果您具有安装 MQSeries Server for Windows 的必需权限,则可以通过适配器对话框创建 MQSeries 队列,并可以跳过下一过程。 如果您没有这样的访问权限,可以使用 IBM WebSphere MQ Explorer 来创建队列。 若要通过 WebSphere MQ Explorer 创建队列,请完成下列步骤。

通过 WebSphere MQ 资源管理器创建 MQSeries 队列

通过 WebSphere MQ 资源管理器创建 MQSeries 队列

  1. 单击“ 开始”,指向 “所有程序”,指向 “IBM WebSphere MQ”,然后单击“ WebSphere MQ 资源管理器”。

  2. 双击“ 队列管理器”,然后双击默认队列管理器。 默认队列管理器通常名为 QM_<machine_name> 其中 machine_name 是计算机的名称。

  3. 右键单击“ 队列”,指向“ 新建”,然后单击“ 本地队列”。

  4. 在“ 创建本地队列 ”对话框的“ 队列名称”中,键入“REPLYTOQ”,然后单击“ 确定”。

  5. 右键单击“ 队列”,单击“ 新建”,然后单击“ 本地队列”。

  6. 在“ 创建本地队列 ”对话框的“ 队列名称”中,键入“SOLICITRESPONSEQ”,然后单击“ 确定”。

创建接收位置和 MQSeries 队列

此过程将创建发送端口和接收位置,以便向 MQSeries 发送消息以及接收来自 MQSeries 的相关消息。 创建接收位置时,还将创建 MQSeries 队列(如果尚未创建)。

创建接收位置和 MQSeries 队列

  1. 打开 BizTalk Server 管理控制台。

  2. 依次展开“BizTalk Server管理”、“BizTalk 组”、“应用程序”,然后展开所需的应用程序。

  3. 右键单击“ 接收端口”,指向“ 新建”,然后单击“ 单向接收端口”。

  4. “单向接收端口属性 ”对话框中的“ 名称 ”框中,键入“MQReply”,然后单击“ 确定”。

  5. 在左窗格中,单击“ 接收位置 ”选项卡,然后单击“ 新建”。

  6. 在“ 接收位置属性 ”对话框的“ 名称 ”框中,键入“MQReply”。

  7. 在“ 传输类型 ”框中,选择“ MQSeries”。

  8. 在“ 接收处理程序 ”框中,选择“ BizTalkServerApplication”。

  9. “接收管道 ”框中,选择“ Microsoft.BizTalk.DefaultPipelines.PassThruReceive”。

  10. 单击 “配置”

  11. 在“ MQSeries 传输属性 ”对话框的“ 轮询间隔 ”框中,键入“10”。

  12. 在“ 队列定义 ”框中,单击省略号 (...) 按钮。

  13. 在“ 队列定义 ”对话框的“ 服务器名称 ”框中,键入计算机名称。

  14. 在“ 队列管理器 ”框中,选择默认队列管理器。

  15. 在“ 队列 ”框中,键入“REPLYTOQ”,然后单击“ 导出”。

  16. 在“ 导出 ”对话框中,单击“ 创建队列”,然后单击“确定”或“ 完成” ,直到退出所有对话框。

创建发送端口和 MQSeries 队列

创建发送端口和 MQSeries 队列

  1. 右键单击“ 发送端口”,指向“ 新建”,然后单击“ 静态单向发送端口”。

  2. 在“ 发送端口属性 ”对话框的“ 名称 ”框中,键入“MQSolicitResponse”。

  3. 在“ 传输类型 ”框中,选择“ MQSeries”。

  4. 在“ 发送管道 ”框中,选择“ Microsoft.BizTalk.DefaultPipelines.PassThruTransmit”。

  5. “接收管道 ”框中,选择“ Microsoft.BizTalk.DefaultPipelines.PassThruReceive”。

  6. 单击 “配置”

  7. 在“ MQSeries 传输属性 ”对话框的“ 队列定义 ”框中,单击省略号 (...) 按钮。

  8. 在“ 队列定义 ”对话框的“ 服务器名称 ”框中,键入计算机名称。

  9. 在“ 队列管理器 ”框中,选择默认队列管理器。

  10. 在“ 队列 ”框中,键入“SOLICITRESPONSEQ”,然后单击“ 导出”。

  11. 在“导出”对话框中,单击“ 创建队列”,然后单击“ 确定 ”或“ 完成” ,直到退出所有对话框。

启用接收位置并启动发送端口

此过程创建在业务流程中接收文件所需的文件夹,并向输出文件夹发送相关消息和响应消息。

启用接收位置并启动发送端口

  1. 在BizTalk Server管理控制台中,单击“接收端口”。

  2. 在详细信息窗格中,右键单击 MQIn 接收位置,然后单击 “启用”。

  3. 在详细信息窗格中,右键单击 MQOut 发送端口,然后单击 “启动”。

创建应用程序使用的文件夹

创建应用程序使用的文件夹

  1. 如果没有应用程序使用的文件夹,请在 C:\ 驱动器上创建一个名为“temp”的文件夹。

  2. C:\temp 目录下创建名为“Pickup2”、“Dropit2”和“MoveIt”的文件夹。

修改应用程序使用的业务流程

此过程将修改应用程序使用的业务流程。

修改应用程序使用的业务流程:

  1. 在 Microsoft Visual Studio 中,双击解决方案文件 MQSCorrelationSolicitResponse.sln 以打开解决方案。

  2. 在“解决方案资源管理器”窗格中,双击业务流程 MQSCorrelationSolicitResponse.odx 以查看业务流程。

  3. 双击消息分配形状 MessageAssignment_1 以启动 BizTalk 表达式编辑器。

  4. 为以下表达式输入相应的 MQSeries 队列管理器名称:

    MQSeriesRequestSendMessage(MQSeries.MQMD_ReplyToQMgr) = "QM_<machine_name>";

  5. 如果您希望从 BizTalk 发送的响应消息包含原始消息的整个内容,而非仅前 100 个字节,请在 BizTalk 表达式编辑器中修改以下行的内容。

    • 原始行:

      MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 768;

    • 更改为:

      MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 1792;

  6. 在 BizTalk 表达式编辑器中,单击“ 确定 ”保存修改后的表达式。

  7. 在 Visual Studio 中,选择“ 文件”,然后选择“ 全部保存”。

生成和部署示例

此过程将生成并部署包含在此应用程序中使用的业务流程的解决方案。

生成和部署示例

  1. 在命令窗口中,导航到下面的文件夹:

    <Samples Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse

  2. 运行 Setup.bat 文件,该文件将执行以下操作:

    1. 为项目创建强名称密钥。

    2. 编译并部署业务流程项目。

    3. 使用文件适配器创建发送端口和接收端口。

    注意

    由于此业务流程指定了使用文件适配器收发文件的绑定,因此,在部署业务流程时,将创建所需的发送端口、接收端口和接收位置,以便接收文件并将其放置到业务流程中,并输出相关消息和响应消息。

绑定和启动业务流程

此过程将业务流程绑定到主机以及相应的发送端口和接收位置。

绑定和启动业务流程的步骤

  1. 在BizTalk Server管理控制台中,展开“业务流程”文件夹。

  2. 在详细信息窗格中,右键单击 MQSCorrelationSolicitResponse 业务流程,然后单击“ 绑定”。

  3. 将业务流程端口绑定到下列发送端口和接收位置:

    业务流程端口 消息传送端口/接收位置
    FileReceivePort MQSCorrelationSolicitResponse.Orchestration.FileReceivePort
    MQSeriesResponseReceivePort MQReply
    SolicitResponsePort MQSolicitResponse
    TempPort MQSCorrelationSolicitResponse.Orchestration.TempPort
    FileSendPort MQSCorrelationSolicitResponse.Orchestration.FileSendPort
  4. 单击“ 主机”。

  5. 在“ 主机 ”框中,选择“ BizTalkServerApplication ”,然后单击“ 确定”。

  6. “发送端口”中,右键单击“ MQSCorrelationSolicitResponse.Orchestration.TempPort”,然后选择“ 启动”。

  7. “发送端口”中,右键单击“ MQSCorrelationSolicitResponse.Orchestration.FileSendPort”,然后选择“ 启动”。

  8. “接收位置”中,右键单击“ MQSCorrelationSolicitResponse.Orchestration.FileReceivePort”,然后选择“ 启用”。

  9. 右键单击业务流程,然后单击“ 启动”。

    注意

    启动业务流程还将自动登记该业务流程。

测试应用程序

此过程将测试应用程序。

测试应用程序

  1. 将文件放入 C:\Temp\Pickup2 文件夹中。

  2. 检查 C:\Temp\Dropit2 文件夹和 C:\Temp\Moveit文件夹中的文件。

    • C:\Temp\Dropit2 文件夹应包含最初由BizTalk Server选取的邮件的副本。

    • C:\Temp\Moveit文件夹应包含一个响应文档,其中包含邮件标识符 (MQMD_MsgId) ,相关标识符 (MQMD_CorrelId) 。

    注意

    如果禁用 MQReply 接收位置,可以在 WebSphere MQ 资源管理器中检查消息,并查看消息和相关标识符是否已设置。 为此,请启动 WebSphere MQ 资源管理器 并检查放置在 REPLYTOQ 队列中的消息。 消息和相关标识符显示在“消息属性”对话框的“标识符”选项卡上。

另请参阅

使用“请求-答复”关联消息
MQSeries 适配器示例