38

我正在阅读这个问题相应的答案,但对答案第一行中的 JMS 代理一词感到困惑:

MS(ActiveMQ 是一个 JMS 代理实现)

我想知道 a 到底是JMS broker什么,它的职责是什么?

JMS 上的 Wikipedia 页面列出了 JMS 生态系统中的几个元素,但没有提及经纪人本身。

4

1 回答 1

52

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

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

消息代理的最大价值在于,它们可以为您做一些非常好的事情来并发处理消息、处理逻辑的故障转移、处理逻辑的部署、监控和日志记录……等等。把消息代理想象成一个专门的用于编写消息处理代码的应用程序服务器,可能使用自定义高级语言。例如,可以在 ESQL 中对 IBM 消息代理进行编程,这是 SQL 的扩展以及相互连接的图表和节点。与使用纯 JMS 自己编写所有代码相比,为消息 borker 编写的程序会更短。

经纪人可以是集中式或分布式的,例如,您可以在纽约有一个中央经纪人,在伦敦和香港有客户与之相连。或者您可以分发代理并在伦敦和香港运行一个实例,在靠近消息源/目的地的地方进行消息处理,这完全取决于您的管理基础架构以及消息代理的数据库等其他资源需要交谈。

于 2013-01-08T05:35:08.740 回答