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