摘 要: 詳細地論述了MQ的基本概念、工作原理,、基本配置及其在實際中的應用,。
關鍵詞: IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ,;中間件;消息,;隊列,;通道
1 WebSphere MQ出現(xiàn)的背景
許多企業(yè)隨著自身規(guī)模不斷壯大和信息化建設的加快,會出現(xiàn)不同部門有不同的應用系統(tǒng),,不同子系統(tǒng)完成不同的功能,,但各個系統(tǒng)之間往往互不相連或聯(lián)系很少,而形成諸多內(nèi)部“信息孤島”的現(xiàn)象,。因此,,每次互聯(lián)都需要單獨設立1個項目,將雙方的應用系統(tǒng)進行改造,。浪費了許多人力物力,,直接影響企業(yè)內(nèi)部整個運作,影響企業(yè)的快速決策,,對企業(yè)長期的發(fā)展形成瓶頸,。面對這種情況,如何使企業(yè)像是一個有機的生物體,,有能力進行自身的新陳代謝,,自我更新,各個子系統(tǒng)分工明確,,互相之間又具備有機的聯(lián)系,。系統(tǒng)的整合是個好辦法,換句話說,,就是不需要改造各個子系統(tǒng),,而是借助某種中間件來加強子系統(tǒng)間的聯(lián)系。
IBM WebSphere MQ就是這樣一個優(yōu)秀的用于應用系統(tǒng)間聯(lián)系的軟件,。它是IBM的商業(yè)通信中間件,,由1個消息傳輸系統(tǒng)和1個應用程序接口組成,其資源是消息和隊列,。它提供一個具有工業(yè)標準,、安全、可靠的消息傳輸系統(tǒng),,實現(xiàn)控制和管理集成的商業(yè)應用,,使得組成這個商業(yè)應用的多個子系統(tǒng)之間通過傳遞消息完成整個工作流程。通過消息傳遞,,將不同子系統(tǒng)有效地聯(lián)系起來,,每個子系統(tǒng)都可以對外提供自身的功能,其中消息是應用系統(tǒng)之間請求、應答和中間結果的載體,。不斷流動的消息將松耦合關系的應用系統(tǒng)串起來,,使它們之間的關系變成了功能疊加。WebSphere MQ可以屏蔽不同的通信協(xié)議之間的差別,,可以最大限度地簡化網(wǎng)絡編程的復雜性,;同時,它支持多種平臺,,對消息支持交易式的提交和回滾。
2 WebSphere MQ的基本概念[1]
2.1 消息
消息是WebSphere MQ中最小的概念,,是一段數(shù)據(jù),,是應用程序之間傳遞的信息載體。消息分為持久和非持久消息,;可以是1個請求,、1個應答、1個報告或1份報文等,。1個消息大致分成兩部分:消息數(shù)據(jù)頭和應用數(shù)據(jù)體,。前者是對消息屬性的描述,后者是應用間傳送的數(shù)據(jù)消息,,可以是字串,、數(shù)據(jù)結構甚至二進制數(shù)據(jù)。
2.2 隊列
隊列可以看作是用于存儲消息的容器,,并且存儲是有順序的,。隊列可分為本地隊列、遠程隊列,、模型隊列,、別名隊列等,其中只有本地隊列是真正意義上的隊列實體,,可以存放消息,;遠程隊列和別名隊列只是一種隊列定義,指向另一個隊列實體,,即遠程隊列指向的是其他隊列管理器中的隊列,,別名隊列指向的是本地隊列管理器中的隊列;模型隊列描述了模型的屬性,,當打開模型隊列的時候,,隊列管理器會以這個定義為模型,創(chuàng)建1個本地隊列,,即動態(tài)隊列,。
2.3 隊列管理器
隊列管理器是MQ系統(tǒng)中最基礎的一個概念,是消息隊列的管理者,,用來維護和管理消息隊列,,負責向應用程序提供消息服務的機構,。如果把隊列管理器比作是數(shù)據(jù)庫,那么隊列就是其中的1張表,,消息就是表中的1條記錄,。
2.4 通道
通道是WebSphere MQ系統(tǒng)中隊列管理器通信雙方建立起來的通信連接,是MQ產(chǎn)品的精華,??梢栽诓煌耐ǖ郎吓渲貌煌耐ㄐ艆f(xié)議,使得編程接口與通信協(xié)議無關,,通道是架設在通信協(xié)議之上的對象,。
在WebSphere MQ中,主要有兩大通道類型:消息通道和MQI通道,。
消息通道是通過消息代理(MCA)把2個隊列管理器連接起來的單向連接,,因此,要實現(xiàn)把分布式的隊列中的消息從源隊列管理器發(fā)送到目的隊列管理器,,必需在源隊列管理器中定義1個發(fā)送通道,,在目的隊列管理器中定義1個接收通道。當要傳輸消息時,,源系統(tǒng)的發(fā)送通道啟動通道,,向接收通道發(fā)送啟動請求,然后從傳輸隊列發(fā)送消息到接收通道,;接收通道把消息放到目標隊列,,如圖1所示。消息通道分為發(fā)送通道,、接收通道,、服務器通道、請求器通道,、群集發(fā)送通道,、群集接收通道等不同類型,供用戶在不同情況下使用,。
MQI通道是WebSphere MQ客戶端和服務器上的隊列管理器的通信通道,,是雙向而且是同步的,這點不同于消息通道,。
3 WebSphere MQ的工作原理
WebSphere MQ的工作原理如圖2所示,。
(1)本地通信:程序A、B運行于同一系統(tǒng)1中,,程序A向隊列1發(fā)送1條信息后,,程序B需要時就可以獲取該信息。
(2)遠程通信:若信息傳輸?shù)哪繕烁臑槌绦駽,程序A向隊列2發(fā)送1條信息后,,系統(tǒng)1中的隊列管理器1發(fā)現(xiàn)隊列2實際上位于系統(tǒng)2中,,它會將信息放到本地的1個特殊隊列——傳輸隊列;接著消息通道代理(MCA)將從傳輸隊列中讀取該消息,,并傳遞到系統(tǒng)2,,然后等待確認。只有MQ接到系統(tǒng)2成功收到信息的確認之后,,它才從傳輸隊列中真正將該信息刪除,。如果遇到通信線路不通或系統(tǒng)2不在運行等故障時,信息會留在傳輸隊列中,,直到被成功地傳送到目的地,。這是MQ最基本也是最重要的技術,即確保信息傳輸,,并且是1次且僅1次的傳遞[2]。
4 WebSphere MQ的雙向通信配置應用舉例
根據(jù)WebSphere MQ的工作原理,,配置2個隊列管理器,,實現(xiàn)兩者雙向通信,如圖3所示,。
腳本如下:
QM1:
DEFIEN QLOCAL(QL_QM1) REPLACE
DEFINE QLOCAL(SENDER1) USAGE(XMITQ) REPLACE
DEFINE QREMOTE(REMOTE1) RNAME(QL_QM2)
RQMNAME(QM2) XMITQ(SENDER1) REPLACE
DEFINE CHANNEL(QM1.QM2) CHLTYPE(SVR)
TRPTYPE(TCP) CONNAME(192.168.0.100(1416))
XMITQ(SENDER1) REPLACE
DEFINE CHANNEL(QM2.QM1) CHLTYPE(RCVR)
TRPTYPE(TCP) REPLACE
QM2:
DEFIEN QLOCAL(QL_QM2) REPLACE
DEFINE QLOCAL(SENDER2) USAGE(XMITQ) REPLACE
DEFINE QREMOTE(REMOTE2) RNAME(QL_QM1)
RQMNAME(QM1) XMITQ(SENDER2) REPLACE
DEFINE CHANNEL(QM2.QM1) CHLTYPE(SVR)
TRPTYPE(TCP) CONNAME (192.168.0.100(1415))
XMITQ(SENDER2) REPLACE
DEFINE CHANNEL(QM1.QM2) CHLTYPE(RCVR)
TRPTYPE(TCP) REPLACE
5 WebSphere MQ的通信方式
WebSphere MQ的通信方式分為點對點和訂閱/發(fā)布的方式[3],。
5.1 點對點方式
點對點方式是最為傳統(tǒng)和常見的通信方式,它是通過定義遠程隊列,、傳輸隊列和通道的方式將隊列管理器聯(lián)系起來,,可實現(xiàn)2個單點系統(tǒng)之間的直接互連或者多點系統(tǒng)鏈式的間接互聯(lián)。
點對點的另一種擴展通信方式:分發(fā)列表,,類似廣播,。該方式可以使用1條MQ指令將單一消息發(fā)送到多個目標隊列,這些多個目標隊列放在分發(fā)列表中,。MQ不僅提供了多點廣播的功能,,而且還擁有智能消息分發(fā)功能,在將1條消息發(fā)送到同一系統(tǒng)上的多個用戶時,,MQ將消息的一個復制版本和該系統(tǒng)上接收者的名單發(fā)送到目標MQ系統(tǒng),。目標MQ系統(tǒng)在本地復制這些消息,并將它們發(fā)送到名單上的隊列,,從而盡可能減少網(wǎng)絡的傳輸量,。如圖4所示。
5.2 發(fā)布/訂閱方式
在該通信方式中發(fā)布者和訂閱者要到代理中注冊,,分別告訴代理將要發(fā)布的消息主題和需要訂閱的主題,。當發(fā)布者發(fā)布被訂主題的消息時,代理會將其發(fā)送給所有的訂閱者以及向其訂閱該主題的相鄰代理,由相鄰代理再進一步廣播,,直至到達目的地,;若代理找到訂閱者要訂的主題,則自動地向相鄰的代理訂閱,,從而形成訂閱鏈,。發(fā)布者和訂閱者可以隨時向代理注銷,退出消息發(fā)布網(wǎng)絡,,如圖5所示,。
發(fā)布/訂閱方式使消息的分發(fā)突破目的隊列地理位置的限制,使得發(fā)送者和接收者之間的耦合關系變得更為松散,,消息的接收者和發(fā)送者都不必關心對方的地址,,而只是根據(jù)消息的主題甚至內(nèi)容進行消息的收發(fā)。
6 前景展望
憑借WebSphere MQ的超強的底層通信能力,,結合IBM的企業(yè)總線產(chǎn)品WebSphere Message Broker構造面向服務的架構可以成功地集成來自多個部門和機構跨不同平臺的產(chǎn)品和應用系統(tǒng),,以滿足業(yè)務上靈活多變的需求。
目前,,在國外,,美國大通銀行、意大利米蘭大眾銀行,、阿根廷BPBA銀行都有成功的應用,;在國內(nèi),人民銀行TIPS系統(tǒng),、中國移動,、中國長航南京長江油運公司等已取得了初步的成效??梢?,中間件產(chǎn)品未來的應用前景是非常廣闊的。
本文從當前許多企業(yè)內(nèi)部的不同應用系統(tǒng)很難互聯(lián)的問題出發(fā)提出IBM的中間件產(chǎn)品WebSphere MQ,,較詳細闡述了WebSphere MQ的基本概念及對象,、工作原理以及通信方式,通過配置2個隊列管理器實現(xiàn)雙向通信例子加深理解,,并對WebSphere MQ的應用前景進行了展望,。
參考文獻
[1] 甘荃,婁麗軍.IBM Websphere MQ基礎教程[M].北京:電子工業(yè)出版社,,2004.
[2] 婁麗軍.消息中間件及WebSphere MQ入門[M].DeveloperWorks(中國).http://www.ibm.com/developerworks/cn/websphere/.2003.
[3] 陳宇翔.精通WebSphere MQ[M].合肥:安徽科學技術出版社,,2004.