使用Apache ActiveMQ与C/C++

4
我们正在编写新的C/C++代码,需要将其集成到ActiveMQ消息总线中。有很多选择:
  • CMS是一个易于使用的类似JMS的C++ API。
  • OpenWire C客户端(仅在ActiveMQ 4.x或更高版本中可用)。
  • OpenWire C++客户端
  • Stomp C客户端(libstomp)
然后还有一些“疯狂”的选项,例如REST API、使用JNI链接ActiveMQ Java客户端、SOAP、XMPP等等...那么,我应该使用什么来将我的C/C++应用程序与ActiveMQ集成,为什么?
2个回答

3
你列出的四个客户端中,只有ActiveMQ-CPP(CMS)是活跃维护的;其余三个已经很长时间没有活跃过了。尽管如此,你应该选择最适合你项目需求的选项。ActiveMQ-CPP可以让你使用所有与JMS客户端相同的功能,并支持代理故障转移,同时还可以让你访问一些ActiveMQ特定的功能,例如删除目标、消息压缩等。

最终,你项目的要求应该决定选择哪个。


0

是的,ActiveMQ-CPP CMS 是将遗留的 C 代码集成的好选择。但我还使用了 Java(JMS) 作为 listener(Replier),使用 JNI 调用从 Java listener 中调用的 C 函数。

在我们的情况下,我们有一个 Java 监听器,它主动监听来自 activemq 经纪人的消息,然后使用 JNI 将该消息传递给本机 c 函数,并使用 getJMSReplyTogetJMSCorrelationID 将来自 c 函数的响应消息再次发送回 activemq 经纪人。

我们已经完成了从 AMQ 经纪人监听消息并将消息传递给 c 函数,并将响应/处理后的消息发送回 AMQ 经纪人的两种方法。

但我对以下几点感兴趣:

  1. 哪种方案最好?为什么?
  2. 如果我们使用 JNI 进行 Java & C,则会出现性能问题或并发问题,以调用共享的 C 库(.so 库)吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接