JMS Eco系统中JMS代理的责任是什么?

时间:2013-01-04 07:02:27

标签: jms

我正在读这个questioncorresponding answer并且在答案的第一行被JMS经纪人一词搞糊涂了:

  

MS(ActiveMQ是JMS代理实现)

我想知道JMS broker究竟是什么,它的职责是什么?

Wikipedia page on JMS列出了JMS生态系统中的几个元素,但未提及经纪人本身。

1 个答案:

答案 0 :(得分:48)

对于JMS代理是什么没有真正的官方定义,但是消息队列和代理之间存在概念上的差异。这是我的看法。

  • 消息队列仅查看消息标头以确定发送消息的位置,消息队列不检查消息正文或执行任何转换消息正文内容的代码。消息队列任务是传递消息,最终只传递一次,并且它们被发送。
  • 消息代理提供了一个编程环境,您可以在其中轻松高效地编写消息转换代码。例如,您可能需要将消息的内容从格式A转换为格式B,并且您不希望必须重写使用格式A的旧客户端,因此您编写消息转换程序并将其部署到消息中经纪人。在这种情况下,message broker将是一个单独的进程,可能在负责运行消息处理代码的单独机器上运行。

消息代理的重要价值在于它们可以为您同时处理消息,处理逻辑的故障转移,处理逻辑的部署,监视和记录等做一些非常好的事情......等等。作为用于编写消息处理代码的专用应用程序服务器,可能采用自定义高级语言。例如,IBM消息代理可以在ESQL中编程,即SQL的扩展,以及您相互连接的图表和节点。为消息borker编写的程序将比使用普通JMS自己编写所有代码的程序短。

经纪人可以集中或分散,例如,你可以在纽约有一个中央经纪人,在伦敦和香港有客户连接。或者你可以让经纪人分发并在伦敦和香港运行一个实例,使消息处理更接近消息的源/目的地,它将全部取决于你的管理基础设施和消息经纪人的数据库等其他资源需要交谈。