Akka.Net 自定义邮箱、自定义 IMessageQueue 或其他

Akka.Net custom Mailbox, custom IMessageQueue, or something else

我们正在使用 Akka.Net,在某些情况下,我们需要参与者在保持消息队列顺序的同时进行可靠通信(即 Oracle Advanced Queues 或 WebSphere MQ,但任何消息队列系统都可以工作,例如 RabbitMQ) .

为什么要使用消息队列,我们​​有各种要求,所以问题不是我们是否应该将其与 Akka 一起使用,而是如何使用。

我们如何将队列连接到 Akka 以使其尽可能无缝?

自定义邮箱是解决方案吗?我们是否需要调整自定义 IMessageQueue 实施?或者也许我们需要一个自定义路由器?是否有任何特定的测试可以 运行 确保我们的 Mailbox/IMessageQueue 与 Akka.Net 兼容?

编辑: 我们是否应该寻求实施自定义传输?

能否提供任何关于从哪里开始的指示?

一般来说,基于一些可靠的队列实现自定义邮箱不是可行的解决方案——实际上它已经在 Akka JVM 端完成了,但它让所有的希望都落空了。

其中一个基本原因通常是对基本思想的误解 - 当人们谈论可靠的交付(MQ 系统提供)时,他们真正的意思是可靠的处理。如果您的消息以 100% 的送达率发送,但最终接收 actor/node 在处理它们时崩溃了怎么办?从邮箱来看一切顺利...

出于这个原因,通常要走的路是一个专门的参与者 - 或者他们的层次结构 - 作为外部消息系统的网关。这样,您不仅可以向它们发送消息,还可以在成功完成流程的明确确认后将它们标记为已接收。示例之一可能是 akka-rabbitmq(用 Scala 编写)。