代码之家  ›  专栏  ›  技术社区  ›  user217648

酒吧/酒吧通讯和演员

  •  0
  • user217648  · 技术社区  · 5 年前

    我们正在考虑使用消息代理来实现基于消息的发布-订阅通信模式。

    您是否需要使用Actor模型才能在您的微服务之间进行基于消息的pub/sub通信。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Alexei Kaigorodov    5 年前

    大多数消息代理都允许同步和异步API。首先必须决定使用哪个API:同步的还是异步的。同步更简单,但使用阻塞I/O操作。阻塞操作会阻塞一个线程,您必须保留与等待I/O操作的线程数相同的线程数。由于每个线程消耗大量的核心内存,因此每个Java进程自然有10000个线程的限制。因此,首先评估您是否有能力使用同步API,如果有,则使用它。

    如果一个JVM中同时循环的消息数量超过10000条,则必须使用异步API和消息的异步处理。参与者只是一种异步处理单元。其他的是来自标准java的CompletableFuture,来自RxJava和其他反应库的观察者,或者通常是消息代理提供他们自己的异步处理方式。看看所有的异步库,选择你更喜欢的。

        2
  •  0
  •   Ivan Baidakou    5 年前

    消息代理只是异步机制之一。Actor模型是一个更广泛的概念,即当消息发送到本地Actor时(即在同一程序中运行,在同一线程中运行)。

    因此,它们是相互独立的:可以在没有参与者(即redis、rabbit mq、zero mq)的情况下使用MessageBroker,也可以在没有MessageBroker的情况下实现参与者。