Vert.x - 集群模式 - 消息缓冲

Vert.x - Clustered Mode - Message buffering

我没有使用经验vert.x 只是探索,因为它看起来很有趣。

我的问题是,当我们在infinispan或hazelcast的集群模式下使用事件总线时,1个jvm实例向一个地址发送消息,另一个作为消息消费者的jvm实例不可用,会不会infinispan 缓冲区并在消费者出现时传递消息并处理并响应发件人?

如果没有为给定地址注册的 EventBus 消费者,消息发送者将收到一个错误,指出在指定地址找不到消费者。当消费者可用时,消息将不会被缓冲和传递。 Vert.x manual:

中提到了这一点

Message sends can fail for other reasons, including:

  • There are no handlers available to send the message to

  • The recipient has explicitly failed the message using fail

In all cases, the reply handler will be called with the specific failure.

之所以这样工作,是因为 Vert.x 无法知道消费者是否会出现来处理消息,因此它不会尝试等待看消费者是否会出现。如果您有这种用例,则需要在客户端进行重试编码。一般来说,Vert.x 使用它所谓的 "Best-effort delivery",因此用户可以自行提供他们需要的任何类型的可靠性保证。