繁体   English   中英

ESB /消息队列快速入门

[英]ESB/Message Queue quick start

我需要实现一个演示系统以证明概念。 基本上,系统描述可以简化为2个模块:

  1. 模块1发送请求
  2. 模块2拾取它们,进行处理并将响应发送回

注意:这些模块位于同一个Intranet中,因此我可能希望该协议比http更快。我想到了以下选项:

  1. 消息队列
  2. ESB
  3. 的Protobuf

理想情况下,该系统将(但不仅限于)基于Java,可在Linux RH上运行并且能够线性扩展,但是性能超出了POC的范围。 我在看ServiceMixActiveMQ 我的想法是在Java这些模块中实现。 该架构将是消息驱动的。 模块将通过消息队列或服务总线进行通信。

“消费者”将请求作为消息发送到消息队列,“生产者”按特定的订阅主题进行选择,处理请求并将响应发回到同一队列。 在“响应”主题上订阅的“消费者”从队列中选择结果。 结束。

我的问题是:

  1. 为了实现上述功能,还需要考虑哪些其他好的选择(协议,体系结构,现有库)?
  2. 为了实现上述目标,我尝试查看《 ServiceMixESB用户指南》,但似乎为了获得类似于上述运行的目标,我学习了一些我不熟悉的东西:JBI,NMR,Karaf,Camel等,而我确实没有时间去做。 因此,我想知道:ESB / Message Queue“ Hello World”应用程序是否有任何快速入门指南或Java示例代码可帮助您使所有事情动起来?

带有XML消息的ActiveMQ应该足够了,除非您的消息很大且很多,在这种情况下,我会选择protobuf(免责声明:我在上一个项目中使用了它们)。

事实上,我可能会在ActiveMQ上进行一些amqp实现,例如Apache Qpid(免责声明:也在不久前使用过)。 但这更多是个人原因。

protobuf的缺点是您需要了解一些有关它们的知识,网络上遍布世界,但是一旦您尝试面对“真正的问题”,这并不太容易。 您还需要一个maven插件来构建和编译文件,除非您想手动执行。

ActiveMQ仅仅是JMS提供程序,我相信您已经看过以下示例:

你好世界ActiveMQ

在实现方面,当module1发送请求时,您要确保该响应将被同一模块读取。 我建议使用临时队列。 将请求发送到某个队列(还发送临时队列名称,例如预期响应将到达的临时队列名称); module2处理该消息并将响应发送到临时队列,模块1在其中使用消息侦听器读取该响应。

现在,您必须非常快地删除此临时队列,以免堆积,还要检查ActiveMQ是否为其提供了唯一的名称。

带有简单参数auto-delete = true的QPID中 ,当没有活动的侦听器时,删除队列时,我不知道如何在ActiveMQ中进行处理,但是应该有一种方法。

我的0.02美元

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM