【问题标题】:Receiving OpenMQ messages in Delphi [closed]在 Delphi 中接收 OpenMQ 消息 [关闭]
【发布时间】:2014-08-21 23:40:13
【问题描述】:

我需要在 Glassfish 服务器和 Delphi 之间进行通信。我需要接收它的消息。我发现 Glassfish 使用 OpenMQ 代理。

首先,我找到了 delphi 的 jms 库。我发现那里只有 JMS 接口。并发现那里有 SonicMQ JMS 实施。但正如我发现的那样,SonicMQ 和 OpenMQ - JMS 的不同代理。也许我错了。

我还找到了适用于 OpenMQ 的 Habari 客户端库,但这些库不是免费的。

也许有人知道这个问题的任何免费解决方案?或者我弄错了,我可以使用 SonicMQ 实现?

我已经下载了 Habari 演示程序,但无法连接到 glassfish 服务器(连接已完全关闭)。也许我做错了什么?我只需要收到消息。我不需要发送它们。

我以前从未使用过 JMS,这就是我有这些问题的原因。

【问题讨论】:

  • “正常关闭连接”是一条非常自然的消息。您需要了解它的含义。
  • 您可以联系我(我是 Habari 客户端库的作者)寻求支持。 Habari 客户端连接要求 OpenMQ 具有活动的 STOMP 侦听器。您可以在 Habari 文档中找到在 OpenMQ 中启用 STOMP 的步骤。
  • 附注所有 JMS 代理都使用自己专有的有线格式,而 STOMP、AMQP 和 MQTT 是可与许多消息代理一起使用的标准化有线格式的示例。 (JMS 是一种 API,而不是协议)
  • 非常感谢您帮助我理解这个问题。据我了解,我需要在 Glassfish 服务器上启用 STOMP。如果是这样,那就有问题了。我不能这样做,因为服务器属于其他组织。他们给了我 QBrowser 来测试连接。 QBrowser 可以毫无问题地接收消息。附言我决定在java上编写接收模块,然后在delphi项目中使用这个模块。但我不认为这是解决问题的最佳方法。

标签: delphi glassfish openmq sonicmq


【解决方案1】:

正如您在评论中所写,运行 GlassFish 服务器的组织不允许使用独立于平台的 STOMP 协议来访问服务器。

这意味着与消息代理交换消息的唯一方法是使用 OpenMQ 的专有 Java 客户端(GlassFish 中的默认 JMS 提供程序)。

因此您需要一个 Java / Delphi 桥接器,它使用 Java 客户端接收消息,然后将它们传递到 Delphi 端。与 Delphi 端的通信可以通过 TCP/IP 完成,这将允许同步和异步接收消息:使用请求/响应通信方式(“同步”通信,拉下一条消息由 Delphi 端发起)或 Delphi 端的侦听器线程,消息将从 Java 端“异步”推送到该线程。


可以通过 C API 使用不同的通信路径。这需要在 Delphi 中导入 C 客户端库。 c-api 的程序员指南可在MQ document collection 中找到。

【讨论】:

  • 我想现在我不明白这个问题。如果将启用 STOMP 协议,我可以使用像这样的一些 stomp 客户端库直接从 delphi 获取消息吗,例如 code.google.com/p/delphistompclient/source/checkout
  • @YuryKerbitskov OpenMQ 在 STOMP 实现中存在细微差别——因此开源客户端可能会或可能不会工作。但是是的,需要在 OpenMQ 端启用 STOMP。此外,STOMP 端口必须打开防火墙(OpenMQ 默认为 7672)
  • 非常感谢!你已经回答了我的问题。
  • @YuryKerbitskov 不客气 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 2017-12-01
  • 1970-01-01
相关资源
最近更新 更多