M B 概述M B 的全称是 message broker,即“消息代理”
“消息”一词前几年比较火,消息中间件也卖的很火,当时似乎 J2EE的产品都要跟“消息”、“中间件”扯上点关系,以彰显潮流
我觉得初学者只需记住“消息”的异步性即可,也就是“消息”和传统的网络连接、远程方法调用等的最大区别,就是你一旦发出消息以后,不用再管它的死活,中间件会处理一切事务,出了问题也会通知你,这样可以更好的分离业务逻辑
把消息当成邮件的话,那么传统网络连接就是由你去送信,而中间件则好比邮局,它来提供送信服务,并且可以跨国境、跨语言,完全不用你操心(相当于中间件可以连接异构平台),使用者只需等在家门口收信
在说“代理”之前,先讲一下 M Q的基本概念
M Q即 message queue,消息队列,也就是 IBM的主打消息中间件产品,IBM几乎所有 SOA相关的产品,都是构建于 M Q之上的,没有 M Q强大的消息传输能力,那么 IBM很多产品都做不起来
在这里不赘述 M Q的功能,初学者只需把 M Q当成一个非常可靠的传输通道即可,你只要往里面放东西,M Q就会把消息传到目的地
那有了强大的 M Q还要“代理”干什么呢
如果你用过 M Q,或者类似的产品如 apache的开源 JM S产品“ActiveM Q”,就会发现,尽管用 M Q不必考虑网络连接、平台异构,但是你在配置的时候、以及使用 M Q编程的时候,都要指定目的地,比如设置 IP地址
这样的程序依旧存在很大耦合性,万一某个组件的 IP变了,所有跟他相关的组件都得改动,轻则修改配置文件、重则重写代码
这时“代理”的作用就开始凸显了
所有组件的 M Q队列都可以直接连接到 M B 上,M B 相当于一个公共服务中心
M B 接收所有消息,然后自动分析其中的内容,找到相应的目的地,进行路由转发,好比你在写信时,只需写明收信人的姓名、