gpt4 book ai didi

java - C++ JMS 客户端或 C++/C SOAP 客户端

转载 作者:太空狗 更新时间:2023-10-29 20:48:11 25 4
gpt4 key购买 nike

我有一个 C++ 应用程序,但它需要与基于 Java 的消息服务“对话”。过去,我们使用 WebSphere MQ 并使用他们的 C++ 库来进行“对话”。

所以我正在寻找(理想情况下)免费的 C++ 到 Java 的解决方案,它不会将整个 JVM 保存在内存中。

我研究过的另一个选择是 SOAP。我研究了 Axis2-C,但它为我提供了我不需要的整个服务器实现。我看过有关 gSOAP 的讨论,但在这里看到的评论褒贬不一。而且它似乎再次为我提供了一个完整的服务器。

我可以自己编写代码 - 但这违背了我(基于 Java)的信念,即那里存在优秀的免费代码。

谢谢!阿兹

最佳答案

这里有几点对我来说没有意义,JMS 是对通用消息传递 API 的特定于 Java 的抽象,这与 JDBC 是对通用数据库 API 的特定于 Java 的抽象非常相似。
我无法想象有人想要 C++ 应用程序的 JDBC 驱动程序,他们宁愿使用 ODBC 驱动程序。

因此,如果我假设您的目标是在不使用 C++ 应用程序的 Websphere MQ 的情况下发送消息,那么我可以建议您考虑以下事项:

  • 您需要异步消息传递吗?即,将消息存储在队列中直到消息被使用?
  • 如果是,则网络服务将不适用于您的应用程序,除非您准备托管网络服务器以接收响应并回调您的应用程序。

您没有提到底层基于 java 的消息服务是 JMS 还是 WebServices。
您可以考虑使用 ActiveMQ作为消息传递提供者,它提供了 JMS API 的实现,还实现了 STOMP 协议(protocol),该协议(protocol)具有适用于多种语言(包括 C++)的客户端库。

您可以在尝试各种选项时保留对端点协议(protocol)的决定,方法是使用类似 Mule 的集成层。 .
您可以在 Mule 上快速开发小型集成,例如在 ActiveMQ 上接受消息,并将其发布到 WebService 并将 WebService 响应放在不同的 ActiveMQ 响应队列中。或者反之亦然,接受 Web 服务调用并将 SOAP 发布到 JMS 队列,等待 JMS 响应并构建 SOAP 响应。

有许多类似 ESB 的框架可以在不同程度上促进这些类型的集成:

编辑:鉴于澄清,我将完善我的答案:

  1. 您需要一个可供 C++ 和 Java 访问的通用消息代理,例如 ActiveMQ。
  2. 您需要一个小型/轻量级集成层,例如上面的一些集成层,以从 ActiveMQ 接受并转发到 SonicMQ,反之亦然。

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 类型)

关于java - C++ JMS 客户端或 C++/C SOAP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3802578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com