我们正在使用Akka.Net,在某些情况下,我们需要actor可靠地进行通信,同时保留消息队列中的顺序(即Oracle Advanced Queues或WebSphere MQ,但任何消息排队系统都可以工作,例如RabbitMQ)。
我们为什么要使用消息队列有各种各样的要求,所以问题不在于我们是否应该在Akka中使用它,问题是如何。
我们如何将队列连接到Akka以使其尽可能无缝连接?
自定义邮箱是否会成为路由?我们是否需要修改自定义IMessageQueue
实施?或者我们需要一个自定义路由器?我们可以运行任何特定的测试,以确保我们的Mailbox
/ IMessageQueue
与Akka.Net配合良好吗?
修改 我们是否应该寻求实施自定义传输?
可以在哪里开始提供指针吗?
答案 0 :(得分:4)
一般来说,基于一些可靠的队列实现自定义邮箱是不可行的解决方案 - 实际上它已经在Akka JVM方面完成了,它失败了所有希望。
其中一个基本原因通常是对基本思想的误解 - 当人们谈论可靠的交付(MQ系统提供)时,他们的真正含义是可靠的处理。如果您的消息以100%的传送率发送,但最终接收的演员/节点在处理时崩溃了怎么办?从邮箱的角度来看,一切顺利......
出于这个原因,通常的方法是专门的角色 - 或者它们的层次结构 - 作为外部消息传递系统的网关。这样,您不仅可以发送消息,还可以在成功完成流程的显式确认后将其标记为接收。其中一个示例可能是akka-rabbitmq(用Scala编写)。