Java 的 AMQP 1.0 库具有完整的对等(无代理)支持?

AMQP 1.0 library for Java with full peer-to-peer (brokerless) support?

关于上述问题:是否有完全支持点对点(点对点、无代理)功能的 AMQP 1.0 Java 库?

我缺少的部分是为直接传入的消息打开本地端口而不通过代理的功能。

到目前为止,我已经使用了 SwiftMQ AMQP 1.0 客户端库,它非常适合通过代理发送和接收(这里使用的 RabbitMQ 服务器没有任何缺陷),也可以直接发送到另一个端点。

另一个端点是用 C# 编写的,使用 AMQPNetLite 库。我发现 AMQPNetLite 库通过 ContainerHost class(另见 )提供了上述功能。

我最好的猜测是 QPID Proton-J 以某种方式支持我正在寻找的东西,但文档和示例很少见。 QPID Proton 库的 Python 变体也在 this example 中显示了 Container class。但是,QPID Proton-J (Java) 库中不包含 Container class 和看起来相似的内容。

是的,我也看到了this question,这让我怀疑我搜索的东西是否存在...

如有任何帮助,我们将不胜感激。

据我所知,没有任何积极维护的 Java 具有点对点能力的实现。 proton-j 项目有一个相当古老的实验性 API 称为 reactor,它可以做到这一点,但没有维护并且可能有相当多的错误。 vertx-proton 项目有一个相对简单的基于服务器的实现,可能适合您,但我不知道它的维护情况如何,所以您必须尝试一下,看看效果如何。

尽管 AMQP 协议有很多复杂性,但您可以自己编写,因此您需要权衡点对点与嵌入式 broker or simple message router. There is some basic AMQP server code here 之类的东西的重要性,这是编写您自己的质子的开始-基于 j 的机制。

不要乱用 AMQP 1.0 协议。这太复杂了。 SwiftMQ AMQP 1.0 客户端运行完美,因为每个人都用它来测试他们的实现。

您启动 intravm 的嵌入式代理就是您所需要的。您使用哪个并不重要,但我猜应该是 Java。因此,请选择开源的 Artemis 甚至 SwiftMQ CE。

然后将您的客户端连接到本地嵌入式代理并配置它以打开 AMQP 端口。