我们与外部方交换收入数据。每年所得税法规都会发生变化,必须实施新的消息架构。总而言之,我们现在有8种不同的架构版本,每种版本都部署在单独的“年度所得税”中。申请和这个数额每年增加1。
因为我们按安装的应用程序向托管公司付款,所以我们希望减少安装的应用程序数量。
所有这些应用程序在功能上都是相同的,这意味着我们验证传入消息,并将有效消息转发到特定MQSeries队列。每个无效消息都路由到响应队列。每个应用程序都拥有自己的“有效”功能。并且'无效'消息队列。
一个处理所有8(+)消息的通用应用程序。必须可以部署新模式,而无需更改应用程序或停止以前运行的“收入年度税”。流动。
我可以在同一个BizTalk接收端口(MessageType XmlDocument)上接收多条消息,并且能够通过调用自定义接收管道(XML Disassembler + XML Validator)在业务流程中动态验证这些消息。例外和有效消息按规定处理。 Schema和通用应用程序之间没有引用,因此可以部署模式而无需停止运行进程。到目前为止,非常好。
业务流程有1个接收形状,2个发送形状(有效,无效)。
SSO包含用于路由'有效'的值。并且'无效'消息到正确的队列。根据传入的消息类型,SSO会被质疑是否有正确的'有效的'或者'无效' queuedefinition。
我之前已处理过动态FTP,FILE,WCF和SMTP端口,这些端口在为适配器提供正确的Context属性后都能正常运行。甚至MSMQ似乎也有一种相当简单的动态设置传输属性的方法。
但是,我似乎无法找到MQSeries MQMT ContextProperties来动态设置queuedefinition。
Microsoft没有提供有关this的大量信息,并且互联网上的大量搜索也没有为我提供任何有用的信息(示例)。
我尝试将IBM's docs与微软进行匹配,但我现在总是陷入困境。
答案 0 :(得分:1)
我建议使用MQSC适配器进行IBM MQ集成。它是Host Integration Server MSI的一部分。它只需要在MQSeries适配器所需的服务器Vs MQ Server for Windows上安装MQ客户端。
以下列格式设置OutboundTransportLocation属性:mqsc:// {channelName} / tcp / {server {({port})/ {queuemanager} / {queuename}
TransportType = MQSC
上下文属性 - 可以在具有命名空间(http://schemas.microsoft.com/BizTalk/2003/mqs-properties)的程序集MQSeriesEx.MQSPropertySchemaEx中找到模式。
如果需要,您只需要设置很少的上下文属性。
如果需要其他属性,请使用MQSeries.MQSPropertySchema上下文属性。
答案 1 :(得分:0)
感谢Vikas提出您的建议。 我按照你的指示,发现它有效!
但是,我发现它比需要的要复杂得多,因为它要求我为每个流配置通道名称。
最适合我的解决方案是我一直想到的解决方案,它就在我面前。我的尝试失败了,因为我设置了传出消息的属性,我应该设置动态发送端口的属性,这是一个致命的错误。
SendPort(Microsoft.XLANGs.BaseTypes.Address)="MQS://SERVER/QMANAGER/QUEUENAME";