【问题标题】:Writing an brokerless AMQP to MQTT adaptor将无代理 AMQP 写入 MQTT 适配器
【发布时间】:2020-02-15 07:01:05
【问题描述】:

我想实现一个 amqp 到 mqtt 适配器,它将接收 amqp 消息,获取它们的有效负载并将其作为 mqtt 消息发布到我的 mqtt 代理。 因此适配器必须能够

  • 监听端口
  • 确认连接请求
  • 接收 amqp 消息
  • 承认他们
  • 使用 mqtt 发布

在我的生态系统中,我想为传入消息提供不同的协议,但我只想运行一个 mqtt 代理。我想避免任何其他经纪人。 我读到 here amqp “1.0 允许无代理点对点通信”。我想这对我的用例来说是正确的(虽然 amqp 0-9-1 会很好)。

我很难想出一个方法来解决这个问题。 rabbitmq 客户端库似乎仅用于客户端到代理通信。
我还浏览了qpid 回购。使用他们的代理库,我可以在我自己的项目中启动一个嵌入式代理,如here 所示。这是一个不错的噱头,但不是我需要的。
mqtt 的东西对我来说没问题。困扰我的是“等待 amqp 消息”部分。

我已经研究了几个小时。我在这里瞎了吗?还是真的那么罕见/复杂?
我非常感谢您或网络上关于可能的库或示例的任何建议。

谢谢。

【问题讨论】:

    标签: java mqtt amqp qpid


    【解决方案1】:

    根据您使用的语言,您可以使用 Qpid proton-c 或 proton-j 协议引擎并在内存中实现自己的 AMQP 1.0 服务器样式组件,该组件可以侦听服务器套接字,然后接受传入的 AMQP 1.0 连接并按照您认为合适的方式处理这些消息。不过,这确实需要您对协议有相当深入的了解,并实现相当多的逻辑来处理您可能会看到的各种客户端行为,因为 AMQP 1.0 协议具有一般的灵活性。

    您可以使用 ActiveMQ Artemis 等众多多协议代理之一或其他类似代理来为您处理所有这些,从而为您节省相当多的精力。如果你想走自己的路,我认为你可以利用 proton C++ 或 C 客户端中的一些更高级别的代码来提供帮助,但这仍然是一项相当大的工作。

    【讨论】:

    • 谢谢。我希望这不会意味着太多的努力,因为 mqtt 适配器对于某个库来说是相当微不足道的。但我想那是错误的。我对 amqp 没有那么深入,但我会看看你的建议。你认为你的方法也会支持 amqp 0-9-1 吗?
    • AMQP 1.0 是我所采用的 ISO 标准
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2019-07-28
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多