我有一个Java Web服务,我将在Scala中从头开始重新实现。我有一个基于演员的新代码设计,大约有10-20个演员。其中一个用例有这样的流程:
Actor
A
获取消息a
,创建数个b
消息由ActorB
处理(可能是多个实例,用于负载平衡),产生多个{ {1}}有关演员c
的消息,依此类推。
在上面的场景中,一条消息C
可能导致几千条消息来回发送,但我不希望每天发送少量a
条消息(是的,目前这不是一项繁忙的服务。)
我有以下要求:
我是消息总线技术的新手,但从我所看到的,这些要求听起来像“消息总线”提供的内容,如RabbitMQ,Kafka,Kestrel,但我也看到akka还提供了一些持久性的方法。 我的问题是,鉴于各种各样的可能性,我迷失了使用哪种技术。我读到像卡夫卡这样的东西可能对我的应用来说太过分了。但我也不确定akka持久性是否满足了我的两个要求(尤其是可扩展性)。
我的问题是:我应该选择企业短信总线吗?像卡夫卡这样的东西?或者类似akka持久性的东西会做什么? 或者,如果我自己实现某些东西(支持AMQP以允许扩展性),它会更快更合适吗?
当然,如果您知道符合此目的的某些内容,也欢迎具体的技术建议。
答案 0 :(得分:0)
像RabbitMQ这样的消息总线(通常称为消息代理)可以处理"开箱即用"您在问题中描述的所有消息传递机制。具体做法是:
RabbitMQ具备开箱即用的能力":