Scala 具有akka集群的akka流

Scala 具有akka集群的akka流,scala,akka,akka-cluster,akka-stream,Scala,Akka,Akka Cluster,Akka Stream,我的阿卡河学习马拉松继续。我想将我的akka streams应用程序与集成 添加对发布的支持相当简单,但是订阅部分我遇到了麻烦 为供参考,认购人如下所示: 我的问题是,我应该如何将这个参与者与我的流集成,以及如何确保在没有流背压的情况下获得发布消息 我正在尝试实现一个pubsub模型,其中一个流可以发布消息,而另一个流将使用它(如果订阅)。您可能希望让您的参与者扩展ActorPublisher。然后您可以从中创建一个源,并将其集成到您的流中 请参阅ActorPublisher上的文档:在这个主题

我的阿卡河学习马拉松继续。我想将我的akka streams应用程序与集成

添加对发布的支持相当简单,但是订阅部分我遇到了麻烦

为供参考,认购人如下所示:

我的问题是,我应该如何将这个参与者与我的流集成,以及如何确保在没有流背压的情况下获得发布消息


我正在尝试实现一个pubsub模型,其中一个流可以发布消息,而另一个流将使用它(如果订阅)。

您可能希望让您的参与者扩展ActorPublisher。然后您可以从中创建一个源,并将其集成到您的流中


请参阅ActorPublisher上的文档:

在这个主题上有一个非常好的例子。与集群的集成已接近尾声,但整个演讲内容丰富。

其他答案已经过时:他们建议使用,自2.5.0版以来,该版本已被弃用


对于那些对当前方法感兴趣的人,科林·布雷克(Colin Breck)在他的博客中写了一个关于整合阿克卡流和阿克卡演员的优秀系列。在整个系列的过程中,布雷克充实了一个系统,该系统从阿克卡流和普通演员开始,然后结合阿克卡集群和阿克卡持久性。本系列的第一篇文章是(分布式流处理部分在中)。

我没有得到的部分是,通常每个订阅创建一个参与者。因此,当我处理订阅消息时,流本身就变成了一个参与者工厂。流将为它想要的每个订阅创建一个参与者,这些参与者将与流的生命周期相关联(除非我收到一个取消订阅请求)。我会重新阅读文档,也许会有一个灯泡熄灭。我找到了如何创建每流演员,仍然在使用两个源。谢谢你的建议,我会更新的。谢谢。不过,我仍然没有掌握如何让ActorPublisher写入我的http流。我有一个actorPublisher源(src),如流[A].to(Sink.ignore).runWith(src)中所示,但我认为需要将其发送到akka http连接接收器,而不是Sink.ignore。但我不知道该怎么弄那个水槽,也不知道这样做是否正确。一切都在运行,除了我不能找出注射部分。我想结束这一部分,因为我打开了一个更具体的问题。
class ChatClient(name: String) extends Actor {
  val mediator = DistributedPubSub(context.system).mediator
  mediator ! Subscribe("some topic", self)

  def receive = {
    case ChatClient.Message(from, text) =>
      ...process message...
  }
}