模块信息
分布式公布订阅主题 API 在外围的 akka-actor-typed
的模块中可用, 然而仅在集群应用程序中应用时:
Topic Actor
通过应用 actor 示意每个 pub 子主题,能够实现分布式公布订阅,akka.actor.typed.pubsub.Topic。
主题 actor 须要在订阅者宿主的每个节点上运行,或者要向该主题公布音讯。
主题的标识是能够公布的音讯类型的元组和主题名称的字符串,然而倡议不要定义具备不同类型和雷同主题名称的多个主题。
而后,本地 actors 能够订阅主题(并勾销订阅):
公布音讯到该主题
Pub Sub 可伸缩性
每个主题都由一个“接待员”服务 key 示意,这意味着主题的数量将扩大到数千或数万,但对于更多的主题,则须要自定义解决方案。这也意味着特定主题的很高周转率将无奈失常工作,因而对于此类用例,倡议应用自定义解决方案。
主题 actor 充当代理,并委派给解决反复数据的本地订阅者,这样,公布的音讯仅发送到节点一次,而不论该节点上有多少订阅者。
当主题 actor 没有主题订阅者时,它将从接待员中登记本人,这意味着将不会向该 actor 公布已公布的音讯。
牢靠传递
与 Akka 的“消息传递可靠性”一样,分布式 pub 子模式下的消息传递保障最多只能传递一次。换句话说,音讯可能会失落。除了具备订阅者的节点的注册表最终是统一的之外,这意味着在一个节点上订阅一个 actor 会有短暂的提早,而后能力在其余节点上晓得并公布。
如果您心愿至多一次传递保障,咱们建议您抉择 Alpakka Kafka。