我有一个C ++应用程序,但它需要与基于Java的消息服务“交谈”。在过去,我们使用WebSphere MQ并使用他们的C ++库来进行“交谈”。
所以我正在寻找(理想情况下)免费的C ++到Java解决方案,它不会将整个JVM保存在内存中。
我研究过的另一个选择是SOAP。 我已经研究过Axis2-C但它给了我整个服务器实现,我不需要它。 我见过关于gSOAP的讨论,但在这里看到了混合评论。它似乎又为我提供了一整套服务器。
我可以自己编写代码 - 但这违反了我(基于Java)的信念,即存在优秀的免费代码。
谢谢! A'z
答案 0 :(得分:5)
这里有几点对我没有意义,JMS是一种基于Java的特定抽象,而不是通用消息传递API,就像JDBC是一种基于Java的特定抽象而非通用数据库API一样。 /> 我无法想象有人想要一个C ++应用程序的JDBC驱动程序,他们宁愿使用ODBC驱动程序。
因此,如果我假设您的目标是在不使用C ++应用程序的Websphere MQ的情况下发送消息,那么我建议您考虑以下事项:
您还没有提到基础的基于Java的消息服务是将是JMS还是WebServices 您可以考虑使用ActiveMQ作为消息传递提供程序,它提供了JMS API的实现,还实现了STOMP协议,该协议具有许多语言(包括C ++)的客户端库。
通过使用Mule之类的功能实现集成层,您可以在尝试各种选项时保留对终点协议的决定。 您可以在Mule上快速开发小型集成,例如接受ActiveMQ上的消息,并将其发布到WebService并将WebService响应放在不同的ActiveMQ响应队列上。反之亦然,接受Web服务调用并将SOAP发布到JMS队列,等待JMS响应并构建SOAP响应。
有许多类似ESB的框架可以在不同程度上促进这些集成:
编辑: 鉴于澄清,我将改进我的答案:
我发现3个链接显示Sonic对C和C ++的支持:
- http://www.sonicsoftware.com/products/docs/sonicmq_app_server_ds.pdf
- http://www.sonicsoftware.com/developer/documentation/docs/sonicmq_c_v60.pdf
- http://communities.progress.com/pcom/servlet/JiveServlet/download/10809-3-10161/cclients_readme_76.htm(此链接上有狡猾的mime类型)
答案 1 :(得分:0)
SonicMQ网站似乎indicate他们支持C ++。
看来这是合适的。
答案 2 :(得分:0)
SonicMQ有C ++库。主要的限制是你必须使用Sonic用来编译库的相同构建(即STL库等)。
http://web.progress.com/en/sonic/sonicmq-clients.html
当然半年前你问过这个问题,所以这些信息可能有点迟了。 : - )