2016-07-13 30 views
0

簡介

我們與外部方交換收入數據。每年所得稅法規都會發生變化,並且必須實施新的消息模式。總而言之,我們現在有8個不同的模式版本,每個版本都在單獨的「年度所得稅」應用程序中部署,並且每年增加1個。使用MQSeries適配器動態設置BizTalk發送端口中的端點定義

因爲我們爲每個安裝的應用程序支付託管公司的費用,我們希望減少安裝的應用程序數量。

所有這些應用程序在功能上都是相同的,這意味着我們驗證傳入消息,並將有效消息轉發到特定的MQSeries隊列中。每條無效消息都被路由到一個響應隊列。每個應用程序都有自己的「有效」和「無效」消息隊列。

計劃

一個通用的應用程序,其處理所有8(+)的消息。新的模式必須可部署,而不需要對之前運行的「收入年稅」流程進行應用程序更改或停機。

到目前爲止...

我可以在同一的BizTalk收到多封郵件接收端口(消息類型的XmlDocument),並通過調用自定義接收管道(XML拆裝+ XML是能夠在業務流程進行動態驗證這些消息驗證器)。例外情況以及有效的消息按照規定進行處理。 Schema和通用應用程序之間沒有引用,因此可以部署模式而無需停止正在運行的進程。到現在爲止還挺好。

業務流程有1個接收形狀和2個發送形狀(有效,無效)。

SSO包含將「有效」和「無效」消息路由到正確隊列的值。根據傳入消息類型,SSO被詢問是否有正確的「有效」或「無效」隊列定義。

問題

我以前處理動態FTP,FILE,WCF和SMTP端口,它們都具有正確的上下文屬性提供的適配器後,準確無誤地運行。即使MSMQ似乎對動態設置傳輸屬性也有相當直接的方法。

但是,我似乎無法找到MQSeries MQMT ContextProperties動態地設置queuedefinition。

微軟沒有提供關於this的很多信息,而且在互聯網上的大量搜索還沒有爲我提供任何有用的示例。

我試着將IBM's docs與微軟的匹配,但總的來說我現在卡住了。

回答

1

我建議使用MQSC適配器進行IBM MQ集成。它是主機集成服務器MSI的一部分。它只需要將MQ客戶端安裝在MQSeries適配器所需的服務器Vs MQ Server for Windows安裝上。

坐落在以下格式MQSC的OutboundTransportLocation屬性:// {CHANNELNAME}/TCP/{{服務器({端口})/ {的QueueManager}/{QUEUENAME}

TransportType = MQSC

上下文屬性 - 架構可以在程序集MQSeriesEx.MQSPropertySchemaEx中找到,名稱空間爲(http://schemas.microsoft.com/BizTalk/2003/mqs-properties)。

根據需要,您只需設置幾個上下文屬性即可。

  • Channel_HeartBeat
  • Channel_MaxMessageLength
  • Channel_UserId
  • Channel_Password
  • ConnectionTimeout

如果附加屬性是必需的不是使用MQSeries.MQSPropertySchema上下文屬性。

0

謝謝Vikas您的建議。 我按照你的指示,發現它的作品!

但是,我發現它比需要更復雜一點,因爲它需要我爲每個流配置通道名稱。

最適合我的解決方案就是我一直想到的解決方案,它就在我的面前。我的嘗試失敗了,因爲我通過設置傳出消息的屬性來設置動態發送端口的屬性,從而犯了致命的錯誤。

SendPort(Microsoft.XLANGs.BaseTypes.Address)="MQS://SERVER/QMANAGER/QUEUENAME"; 
相關問題