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",因此用户可以自行提供他们需要的任何类型的可靠性保证。
我没有使用经验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",因此用户可以自行提供他们需要的任何类型的可靠性保证。