1

我有一个 AMQP 应用程序,它在客户端有一个持久的 RabbitMQ 队列,在服务器端有一个 RabbitMQ 队列。客户端始终写入本地持久队列,这些消息使用铲子插件传输到服务器。

Producer -> Local Queue  --------- SHOVEL ---------- Remote queue -> Consumer

无论服务器是否存在,应用程序仍然可以正常工作,并且尽可能使用铲子进行发送。另一方面,服务器不需要知道客户端的位置,因为它总是从本地队列中消耗。我想使用 FilePersistent Mailbox 将此拓扑迁移到 AKKA。甚至可能吗?Akka 核心库中是否有类似 Federation 或 Shovel 插件的东西。

PS:我想要实现的是完全替换 AMQP 以摆脱 RabbitMQ。它工作正常,但它是另一个需要安装、配置和维护的软件。我想只使用库而不是像 RabbitMQ 这样的其他服务器从我的应用程序中提供所有这些功能。

只是为了澄清一点我想要实现的是这样的:

Actor1 -> DurableMailBox1  ----Shovel? Federation?---- DurableMailbox2 <- Actor2

[编辑]

看起来没有办法直接与邮箱通信。可以使用 AKKA 实现的可能拓扑如下:

 Remote Actor1 -> [DurableMailBox1 <- Actor2]

可以保护箭头以确保消息传递但无法将消息从一个邮箱自动复制到另一个邮箱的位置。

4

1 回答 1

0

看看 Akka RemotingReliable Proxy Pattern

通过 ReliableProxy 发送使消息发送与所表示的目标在同一个 JVM 中一样可靠,前提是远程参与者系统不会终止。实际上,在评估此通信通道的可靠性时,必须将两端(即 JVM 和参与者系统)视为一体。好处是中间的网络被排除在这个等式之外。

请参阅ReliableProxy 的此增强功能,它可以缓解远程参与者系统终止的问题。

于 2013-05-05T15:23:51.197 回答