DynamicReceive 示例(BizTalk Server 示例)

DynamicReceive 示例演示当动态指定 mqseries 队列的 URI 时,如何接收来自 mqseries 队列的 BizTalk Server 消息。

本示例的用途

此示例按 queueManagerqueueserver 变量指定的方式动态创建 MQSeries 队列。 它启用动态接收方案,并基于MQMD_MsgId中指定的筛选条件和MQMD_CorrelId消息属性,从动态指定的 MQSeries 队列中获取 BizTalk Server 消息。

本示例的设计方式和原因

通过在业务流程中指定 MQSeries 队列的 URI 地址,MQSeries 适配器即可从该队列动态接收消息。 此功能可通过在业务流程中使用要求-响应发送端口来获得。

若要动态接收消息,请在业务流程中的 表达式 形状中指定以下内容:

  1. 通过设置 BizTalk Server 消息上的以下属性启用动态接收: DynamicReceive = 'Yes'

  2. 通过设置端口 URI 来指定要从中获取消息的地址。 还可以指定以下内容:

    • 使用消息上的 WaitInterval 属性,指定在获取消息前等待的时间间隔。

    • 指定用于接收消息的匹配条件。 匹配条件选项包括 消息 IDCorrelationIDGroupIDMessageSequenceNumber。 有关更多详细信息,请参阅 "与 BizTalk Server 相关的属性" https://go.microsoft.com/fwlink/?LinkId=89396

    使用这些属性创建消息后,将使用要求-响应发送端口将其发送到 MQSeries 队列。 端口指定适配器以便从指定的 URI 接收消息,并显示指定的匹配选项。 以下操作结果:

  • 如果满足用于获取消息的筛选条件,则将从队列中检索消息并将其发送回业务流程。

  • 如果未满足用于获取消息的筛选条件,则返回一个虚拟响应。 这表明指定的选项未返回队列中的任何消息。

    使用动态接收功能可提供更大的灵活性,因为不需要固定的接收位置。 在某些情况下,在运行时之前可能不会知道 URI。 动态接收功能允许您动态确定从何处获取消息。 这也意味着无需在业务流程内实现队列约定。 您可以根据指定的匹配条件,使用从 MQSeries 队列中动态指定的 URI 等待获取消息。

本示例所在的位置

<示例路径>\Samples\AdaptersUsage\MQSeriesAdapter\DynamicReceive

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

文件 说明
DynamicReceive. schemas.btproj,

DynamicReceive .sln
应用程序的 Project 和解决方案文件。
DynamicReceive odx 应用程序的 BizTalk 业务流程文件。
Setup.bat 用于创建密钥文件的批处理文件,编译该项目并进行部署。

如何使用本示例

指定适用于你的解决方案的XLANGs。 更改 WaitInterval 以指定你希望接收响应消息的时间。 更新 (或添加) 匹配选项,如果你打算获取所有消息,则将其删除。

生成并运行示例

创建示例

  1. 在 Microsoft Visual Studio 中创建新的业务流程项目。

  2. 启用动态接收操作,方法是将 BizTalk Server 消息中的DynamicReceive属性设置为 'Yes'

  3. 通过设置 端口 URI来指定要从中获取消息的地址。

  4. 还可以指定以下两个属性:

    1. 使用消息上的 WaitInterval 属性来指定消息前的等待时间间隔。

    2. 指定用于接收消息的匹配条件。 有关详细信息,请参阅“匹配选项”帮助。

  5. 更改业务流程中的以下变量以指定从中获取消息的位置:

    • QueuequeueManagerserver。 它们用于在 表达式 形状中生成 URI。
  6. 根据需要修改 " 表达式 " 形状,以注释掉动态队列创建和匹配选项。

  7. 可以通过以下任一方式生成并部署项目:

    • 打开解决方案,右键单击解决方案资源管理器中的项目,然后单击 " 属性 " 以查看项目属性。 在 "签名" 选项卡上,单击< "选择强名称密钥文件" 下拉框中的 "新建 ... > "。 然后提供密钥文件名并进行部署。

    • 或者,运行创建密钥文件的 setup.bat 文件,生成项目并对其进行部署。

运行示例

  1. 将业务流程绑定到 BizTalk 主机。

  2. 启用业务流程创建的文件接收端口。 将 file 接收位置从 c:\temp\in 更改为正确的文件夹。

  3. 登记并启动已创建的两个发送端口。 一个端口是动态要求响应端口类型,另一个是文件发送端口且是用于发送消息的队列。 确保已将此设置为正确的位置。

  4. 若要启动该业务流程,请将一个文件放在输入文件夹中。 这会调用 MQSeries 适配器并调用指定服务器上的 MQSAgent2 com + 组件来获取消息。 接收到的消息将存储在文件发送端口中指定的文件夹位置。

  5. 如果找不到与 表达式 形状中指定的条件相匹配的消息,则会将一个虚消息放入 output 文件夹中。 若要禁用匹配选项,请在 表达式 形状中注释掉最后两行。

注释

  • 如果正在动态创建队列但未删除,则该队列将在下一个业务流程实例激活时引发错误。

  • 还可通过其他方法动态设置 URI,此示例只指定了一个选项。 例如,可在消息上下文中读取某些属性来设置 URI。

  • 如果队列中没有满足匹配选项的消息,则将返回一个虚拟消息。

  • 由于此示例使用动态发送端口,因此,可能需要指定诸如重试和事务等其他选项。 使用由适配器公开的上下文属性,可在将消息发送到动态要求-响应端口前设置这些选项。

  • 可使用 MQSAdapterAdmin2 接口动态创建和删除 MQSeries 队列。 有关如何动态创建 MQSeries 队列的示例,请参阅中的 "队列管理支持" https://go.microsoft.com/fwlink/?LinkId=89400