我有一个C++应用程序,但它需要与基于Java的消息服务"交谈".在过去,我们使用WebSphere MQ并使用他们的C++库来进行"交谈".
所以我正在寻找(理想情况下)免费的C++到Java解决方案,它不会将整个JVM保存在内存中.
我研究过的另一个选择是SOAP.我已经研究过Axis2-C但它给了我整个服务器实现,我不需要它.我见过关于gSOAP的讨论,但在这里看到了混合评论.它似乎再次为我提供了一个完整的服务器.
我可以自己编写代码 - 但它违背了我(基于Java)的信念,即存在优秀的免费代码.
谢谢!A'z
这里有几点对我没有意义,JMS是对特定消息传递API的Java特定抽象,就像JDBC是通用数据库API的Java特定抽象一样.
我无法想象有人想要一个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的框架可以在不同程度上促进这些类型的集成:
编辑:鉴于澄清,我将改进我的答案:
2.1根据我所知的Sonic,他们有一个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类型)