【发布时间】:2012-08-27 09:23:50
【问题描述】:
我是 C++ 新手,但在 Java EE 方面有很多经验。
我需要编写一个高度异步的小应用程序。它从 HTTP 接收数据并将其存储在队列中(它需要有保证的交付和非常高的吞吐量),比如 ActiveMQ 或 OpenMQ,可能通过 JMS。
然后另一个 C++ 应用程序/侦听器从队列中取出数据(通过一些由队列直接激活的侦听器,而不是通过我的池),连接到 MySQL 数据库并进行一些业务逻辑计算并将消息发送到另一个排队。
在 Java EE 中,这将是一个将消息发送到 JMS 队列的 Web 应用程序。消息驱动 Bean 将成为 EJB 模块中这些消息的消费者,而会话 EJB 将消息发送到传出 JMS 队列。
有 C++ 经验的人可以向我解释一些基础知识吗:
JMS 是 C++ 保证交付队列的唯一选择吗?您是否建议使用 ActiveMQ 或其他东西,请记住消息 Consumer 将使用 C++。
-
我是否需要在 C++ 中创建某种多线程守护程序来侦听队列消息,或者此线程创建(消息消费)是否是 ActiveMQ 的 C+ 消费者实现的一部分?
李>
非常感谢有关如何实施上述方案的任何其他建议。
已编辑:我希望消息代理和客户端使用 C++。 ActiveMQ 是一个 Java 产品,这并不是我们真正需要的。
【问题讨论】:
-
看看ZeroMQ。它可能是您正在寻找的。span>
-
ZeroMQ 对于像我这样的新手来说看起来非常低级。我正在寻找已经具有更高级别抽象的可靠消息队列的库。
-
可以选择专有软件吗?比看看 IBM WebSphere MQ,它提供了广泛的客户端库...
-
Apache Qpid 有一个 C++ 客户端接口/库和一个 JMS 提供程序。
-
没有与 JMS 交互的 C++ 标准。为了与任何 JMS 提供者交互,您需要实现他们的协议。每个 JMS 提供者都有自己的客户端 API,但它需要是您直接针对提供者使用的东西。