2013-01-04 39 views

回答

45

对于JMS代理是什么没有真正的定义,但消息队列和代理之间存在概念上的区别。这是我的承诺。

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

消息代理的一大价值在于,它们可以用于处理消息的同时,故障恢复处理逻辑,处理逻辑的部署,监控和日志记录...等想到为你做一些真正的好东西作为用于编写消息处理代码的专用应用程序服务器的消息代理,可能以自定义高级语言。例如,可以在ESQL中将IBM消息代理编程为SQL的扩展,以及您相互连接的图表和节点。为消息工具编写的程序比使用普通JMS编写所有代码要短。

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