我有一个AMQP应用程序,它在客户端有一个持久的RabbitMQ队列,在服务器端有一个RabbitMQ队列。客户端总是写入本地持久队列,并使用铲子插件将这些消息传输到服务器。
Producer -> Local Queue --------- SHOVEL ---------- Remote queue -> Consumer
服务器是否不存在,应用程序仍然有效,铲尽可能发送。另一方面,服务器不需要知道客户端的位置,因为它总是来自本地队列。我想使用FilePersistent Mailbox将此拓扑迁移到AKKA。它甚至可能吗?在Akka核心库中是否有类似Federation或Shovel插件的东西。
PS:我想要实现的是完全取代AMQP以摆脱RabbitMQ。它工作正常,但是另一个软件安装,配置和mantain。我想使用库而不是像RabbitMQ这样的其他服务器从我的应用程序提供所有这些功能。只是为了澄清我想要实现的更多内容是这样的:
Actor1 -> DurableMailBox1 ----Shovel? Federation?---- DurableMailbox2 <- Actor2
[编辑]
看起来没有办法直接将邮箱与邮箱通信。可以使用AKKA实现的拓扑结构如下:
Remote Actor1 -> [DurableMailBox1 <- Actor2]
可以保护箭头以确保邮件传递,但无法自动将邮件从一个邮箱复制到其他邮箱。
答案 0 :(得分:0)
查看Akka Remoting和Reliable Proxy Pattern。
通过ReliableProxy发送消息使发送完全可靠 好像所表示的目标是在同一个JVM中生存, 只要远程actor系统没有终止。有效, 两端(即JVM和actor系统)必须被视为一个 评估此通信信道的可靠性。好处 就是中间的网络被从这个等式中取出。
请参阅ReliableProxy的this enhancement,以缓解远程actor系统终止的问题。