【问题标题】:Vert.x - Clustered Mode - Message bufferingVert.x - 集群模式 - 消息缓冲
【发布时间】:2020-10-26 23:52:41
【问题描述】:

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

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

【问题讨论】:

    标签: vert.x vertx-eventbus


    【解决方案1】:

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

    消息发送可能因其他原因而失败,包括:

    • 没有可用于将消息发送到的处理程序

    • 收件人已使用 fail 明确地使邮件失败

    在所有情况下,回复处理程序都将使用特定的 失败。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多