我正在用spray/akka创建一个简单的restapi,以接收json消息并将其传递给apachekafka生产者。apachekafka producer是一个非阻塞api,用于向kafka消息代理发送消息,并且是线程安全的(应该由所有线程共享)。
我的基本架构是路由特性中的以下(伪代码)
val myKafkaProducerActor = system.actorOf(Props[KafkaProducerActor])
val route = {
path("message") {
get {
entity(as[String]) { message =>
myKafkaProducerActor ! message
}
}
}
也就是说,我总是使用一个actor(mykafkaproducerator)来转发消息,因为该actor只包含非常少的检查(检查是否是json文档)并立即将其交给非阻塞消息生成器api。
我现在关心的是:
将消息转发给一个单独的参与者是否有意义(Kafka制作者是非阻塞的,我只是因为有效性检查而将其分开,尽管目前这种检查很便宜)。
默认的akka消息可靠性如何影响spray(最多一次传递)。这仅仅是理论上的,因为消息是在同一个jvm上转发的吗?是不是最好不要使用任何后续演员,并接受一个小的性能罚款,但有一个更大的可靠性?
谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!