Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;和JMS—如何连接这两者? 我是一个C++新手,但在java EE上有很多经验。_C++_Jms - Fatal编程技术网

C++;和JMS—如何连接这两者? 我是一个C++新手,但在java EE上有很多经验。

C++;和JMS—如何连接这两者? 我是一个C++新手,但在java EE上有很多经验。,c++,jms,C++,Jms,我需要编写一个非常异步的小应用程序。它从HTTP接收数据并将其存储在队列中(它需要有保证的交付和非常高的吞吐量),类似ActiveMQ或OpenMQ,可能通过JMS 另一个C++ APP/Listar从队列中取出数据(通过直接由队列激活的一些侦听器,而不是通过我的池),连接到MySQL数据库并进行一些业务逻辑计算,并将消息发送到另一个队列。 在JavaEE中,这将是一个向JMS队列发送消息的web应用程序。消息驱动bean将是EJB模块中这些消息的使用者,会话EJB将向传出JMS队列发送消息 可

我需要编写一个非常异步的小应用程序。它从HTTP接收数据并将其存储在队列中(它需要有保证的交付和非常高的吞吐量),类似ActiveMQ或OpenMQ,可能通过JMS

另一个C++ APP/Listar从队列中取出数据(通过直接由队列激活的一些侦听器,而不是通过我的池),连接到MySQL数据库并进行一些业务逻辑计算,并将消息发送到另一个队列。 在JavaEE中,这将是一个向JMS队列发送消息的web应用程序。消息驱动bean将是EJB模块中这些消息的使用者,会话EJB将向传出JMS队列发送消息

可以用C++经验的人给我解释一些基本知识:< /P> <> > JMS是C++提供的保证传递队列的唯一选择吗?您建议ActuMeq或其他什么东西,记住消息消费者将在C++中。

< > >我需要在C++中创建某种类型的多线程守护进程,监听队列消息,或者是线程创建(消息消费)ActuMeq实现C++用户的一部分?

对于如何实施上述方案的任何其他建议,我们将不胜感激


<>编辑:我更喜欢C++中的消息代理和客户端。ActiveMQ是一种Java产品,这并不是我们真正需要的。

-1-JMS-Java消息服务只是Java和Java的API参考。除了AMQP之外,在消息传递中没有标准适用于C++(这是我认为,不真正地执行交叉执行,它应该是好的)。对于C++,您必须依赖于特定的供应商库来实现每个消息代理。p> 实施建议:

    > ActuMeq-它有一个很好的C++ API(称为CMS),它是用JMS建模和命名的,所以你会对API感到熟悉。主代理将在Java上运行,而不太可能是最简单的选择

    <> > IBM WebSphere MQ-不开源,企业级代理,它运行本地(用C编写),并有C++库。当你通过学习曲线时,你会感觉很好,而且价格也不重要

  • RabbitMQ—非常流行的可靠消息传递,具有高性能和开放源代码。具有C++客户端lib,但在Erlang中写入并在Erlang /OTP运行时运行。

  • ApacheQPID—不太知名的AMQP/JMS代理。在服务器端,java和C++中C++语言的代理有更好的性能。附带C++客户端lib。

2-对于多线程,JMS规范也没有真正的解决方案。它更像javaee容器(或Spring框架),它简单地包装了线程的管理,并将开发人员从中解放出来。在本例中,ActiveMQ只提供了几个支持类,据我所知,其他供应商库也没有提供。所以,寻找一些可以包装线程的库(我不知道),或者自己处理消费线程。它不应该那么凌乱,做对了。

看看。对于像我这样的新手来说,ZeroMQ看起来非常低级。我正在寻找的东西已经有一个可靠的消息队列更高层次的抽象库。专有软件是一个选项吗?而不是看IBM WebSphere MQ,它提供了一系列的客户机库…Apache QPID既有C++客户机接口/库又有JMS提供者。没有与JMS交互的C++标准。为了与任何JMS提供者交互,您需要实现它们的协议。每个JMS提供程序都有自己的客户端API,但它需要您直接针对提供程序进行处理。惊讶地发现,这个答案只获得了五张赞成票。非常好。遗憾的是,我只能给一个。