0
public void unregisterConsumer(MessageConsumer<Object> mc) {
    mc.unregister(result -> {
        if(result.succeeded())
            return;
        else
            //uh oh
    });
    
}

万一出现故障AsyncResult,再次调用可能是不明智的unregisterConsumer,也许是vertx.setTimer(5000, id -> unregisterConsumer(mc));

4

1 回答 1

2

如果 Vert.x 没有集群,那么失败的可能性可以忽略不计(它只会在出现错误的情况下发生)。

如果 Vert.x 是集群的,如果底层集群管理器未能删除订阅(例如,如果网络通信丢失),则可能会发生这种情况。

至于重试,如果您的应用程序动态注册消费者可能是一个好主意。否则,您可以忽略失败并让进程终止。集群管理器最终会清理订阅。

于 2021-05-19T12:03:39.693 回答