《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 浅谈消息中间件IBM WebSphere MQ
浅谈消息中间件IBM WebSphere MQ
王 建1,江 婷2
1.中国科学技术大学 苏州软件学院,江苏 苏州 215123;2.上海南洋高科技有限公司,上海 20
摘要: 在ASP.NET网络程序开发中,由数据库驱动的Web应用程序,为详细地论述了MQ的基本概念、工作原理、基本配置及其在实际中的应用。
Abstract:
Key words :

摘  要: 详细地论述了MQ的基本概念、工作原理、基本配置及其在实际中的应用。
关键词: IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="IBM MQ">IBM MQ" title="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.

此内容为AET网站原创,未经授权禁止转载。