【问题标题】:ESB/Message Queue quick startESB/消息队列快速入门
【发布时间】:2013-04-09 20:38:50
【问题描述】:

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

  1. 模块 1 发送请求
  2. 模块 2 接收它们,处理并发送回响应

(注意:模块驻留在同一个 Intranet 中,所以我可能希望协议比 http 更快。 我想到了以下选项:

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

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

“消费者”将请求作为消息发送到消息队列,“生产者”通过特定订阅主题提取它们,处理请求并将响应发布回同一队列。订阅“响应”主题的“消费者”从队列中挑选结果。结束。

我的问题是:

  1. 为了实现上述功能,还有哪些其他好的选择(协议、体系结构、现有库)?
  2. 为了实现上述目标,我尝试查看ServiceMixESB User Guide,但似乎为了获得类似上述运行的东西,我必须学习一些我不熟悉的东西:JBI、NMR、Karaf、Camel 等我没有时间去做。所以,我想知道:是否有任何 ESB/消息队列“Hello World”应用程序的快速入门指南或 java 示例代码可以帮助启动一切?

【问题讨论】:

    标签: java architecture message-queue esb


    【解决方案1】:

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

    事实上,我可能会选择一些 amqp 实现,比如通过 ActiveMQ 实现的 Apache Qpid(免责声明:也曾使用过)。但这更多是个人原因。

    protobuf 的缺点是你需要一些关于它们的知识,网络上到处都是你好世界,但是一旦你尝试面对“真正的问题”,它就变得不太容易了。 您还需要一个 maven 插件来构建和编译文件,除非您想手动完成。

    ActiveMQ 只是一个 JMS 提供者,我相信您已经看过以下示例:

    Hello World ActiveMQ

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

    现在,您必须非常快速地删除这些临时队列,以免堆积,并检查 ActiveMQ 是否为它们提供了唯一的名称。

    在 QPID 中使用简单的参数 auto-delete=true,当没有活动侦听器时,队列被删除,我不知道 ActiveMQ 中是如何处理的,但应该有办法.

    只是我的 0.02 美元

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 1970-01-01
      • 2012-10-11
      • 2018-08-04
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多