2012-04-12 34 views
5

我是WebSphere MQ的新手,我試圖使用c#代碼將消息作爲消息通過WebSphere MQ移動。 WebSphere MQ可以直接傳輸文件(例如* .txt)嗎?WebSphere MQ可以直接傳輸文件(例如* .txt)嗎?

在此先感謝。

+0

帖子標題詢問WMQ是否可以傳輸文件,但是正文提到WMQ文件傳輸版。目前還不清楚你指的是哪一個。你能澄清嗎?你是否試圖編寫代碼將文件放入消息中?或者你是否試圖從代碼驅動FTE傳輸? – 2012-04-12 13:52:55

+0

對不起,誤導。我沒有WMQ文件傳輸版,只是想寫代碼把文件放入messages.Now我用FileStream讀取文件內容作爲字符串,然後把該字符串在message.Any方式更好?謝謝! – 2012-04-13 08:39:02

回答

3

沒有,基本WebSphere MQ不直接傳輸文件。移動文件的語義包括諸如文件名,目錄路徑,名稱在不同類型的文件系統(即,UNIX文件樹與z/OS分區數據集)之間的轉換。消息傳遞使用特定於隊列和主題的語義,這些與文件的語義完全不同。

因此,基WMQ不會嘗試執行文件語義作爲其核心功能的一部分。 WebSphere MQ File Transfer EditionIBM Sterling Connect:Direct提供該功能。在FTE的情況下,託管文件傳輸本身就構建在WebSphere MQ之上。

過去許多人都使用消息傳遞來編寫移動文件的解決方案,無論這是WebSphere MQ還是其他傳輸提供者。事實證明,以一種可靠的方式這樣做是一項不平凡的任務。以下是一些問題:

  • 如果您爲每個文件創建單個消息,則消息大小差別很大。調整消息傳遞引擎以同時執行非常大而非常小的消息是非常困難的。
  • 如果您將文件分割成塊,然後您可以調整塊大小以獲得最佳的消息傳遞性能,但是現在您必須處理序列保留和重新發送丟失的消息。
  • 是否附加,替換或重命名具有相同名稱的目標文件的一般問題。
  • 如何以交易方式在目的地提供文件的一般問題。您不希望收件人抓取一半文件。
  • 文件完整性(FTE對文件進行散列處理以確保它在傳輸過程中不會發生變化)。

這些是以通用的方式完成這個問題的一個例子。但是,如果您只需要一次性點對點解決方案,那麼請看Q程序SupportPac MA01。它將獲取文件,並且一次一行地寫入消息或將整個文件寫入單個消息。它也可以用作管道,因此可以有兩個Q實例,其中一個將消息傳遞給隊列,另一個將消息傳回隊列。

+0

非常感謝!你提到了第一個問題,「調整消息傳遞引擎非常難以同時執行非常大和非常小的消息」,這是什麼意思?它會降低性能,對吧? – 2012-04-16 16:29:12

+0

感謝您的回覆!性能對於應用程序很重要,並且必須避免阻止數據流入通道。獲取消息後,我們應該釋放相關資源,對嗎?在我的應用程序中,我調用qmgr.Disconnect()釋放資源。是否足夠?任何更好的方法? – 2012-04-20 06:22:49

+0

定義「更好的方法」。幾個FTE特工的成本要比你試圖從你的本土版本中解脫出來的花費少得多。如果您預計部署到需要移動文件的大型節點網絡,性能,可靠性和可管理性的差異將爲代理商付出代價。但是,如果您仍然想探索設計選項,請提出一個新問題。 SO不像討論論壇那樣工作,而是由不連續的問題和投票驅動。帶有自己的標籤和答案的新問題將更好地幫助下一個遇到類似問題的人。 – 2012-04-20 13:50:06

3

WebSphere MQ文件傳輸版(FTE)是構建在WebSphere MQ之上用於傳輸文件的產品。傳輸文件不需要編碼。有一些命令和MQ Explorer可以用來配置文件傳輸。您還可以通過腳本啓動文件傳輸。

通過這個閱讀developerWorks中國article

+0

對不起,誤導,但我沒有FTE.Maybe我必須編寫代碼來傳輸文件我自己。也謝謝! – 2012-04-13 08:43:31