我们正在考虑使用消息代理来实现基于消息的发布-订阅通信模式。
您是否需要使用Actor模型才能在您的微服务之间进行基于消息的发布/订阅通信。
答案 0 :(得分:1)
大多数消息代理都允许同步和异步API。首先,您必须确定要使用的API:同步还是异步。同步比较简单,但是使用阻塞的I / O操作。阻塞操作将阻塞线程,并且您必须保留与等待的I / O操作数量一样多的线程。由于每个线程消耗大量的核心内存,因此每个Java进程自然限制约10000个线程。因此,请首先评估您是否有能力使用同步API,如果可以,请使用它。
如果一个JVM中同时传播的消息数超过10000,则必须使用异步API和消息的异步处理。 Actor只是异步处理单元的一种。其他的是标准Java的CompletableFuture,RxJava的Observer和其他反应式库,或者消息代理通常提供自己的异步处理方式。查看所有异步库,然后选择自己喜欢的库。
答案 1 :(得分:0)
消息代理只是异步机制之一。 Actor模型是更广泛的概念,即何时将消息发送给本地actor(即在同一程序中,在同一线程中运行)。
因此,它们彼此独立:可以在没有参与者(即redis,rabbit-mq,zero-mq)的情况下使用消息代理,也可以在没有消息代理的情况下实现参与者。