inj*_*eer 4 hazelcast vert.x vertx-eventbus
我对事件总线/ Hazelcast 的工作原理缺乏一点了解。
想象一下消费者和生产者 Verticle 通过集群 EB 进行通信的情况。消耗部分是进行CPU/内存/IO密集型计算。
当在某个时刻由于负载而消费者无法立即处理消息时,会发生什么?
消息是否会在环形缓冲区内排队并最终在稍后处理(考虑到 NettySingleThreadEventLoop根据vert.x 中事件总线的大小限制为 20 亿条)?达到上限后会被丢弃吗?
一般来说,只要集群中没有组件崩溃, EB 中的消息是否可以被认为是持久的并且具有传递保证?
如果消费者无法处理消息,Vert.x 会将消息累积在内存中的队列中。
当队列达到其限制时,消息将被丢弃。队列中的元素数量可以通过 进行配置MessageConsumer.html#setMaxBufferedMessages。它不依赖于消息大小。
如果您需要交付保证,请不要使用 EventBus,而使用 ActiveMQ 等消息传递系统(Vert.x 有此类消息传递系统的客户端)。
一般来说,Vert.x会尽力不丢失消息,但 EventBus 根本不是一个功能齐全的消息系统。
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |