Java Vertx如何在没有消息出现时超时消费者

Java Vertx如何在没有消息出现时超时消费者,java,vert.x,Java,Vert.x,如果消息在超时x秒后没有出现,我想抛出一个错误。我找不到任何内置的方法来做这件事。有什么想法吗 这是我当前的代码: consumer = vertx.eventBus().consumer(correlationId); consumer.handler(message -> { message.reply("Received"); consumer.unregister(); }); consumer.exceptionHandler(exception ->

如果消息在超时
x
秒后没有出现,我想抛出一个错误。我找不到任何内置的方法来做这件事。有什么想法吗

这是我当前的代码:

consumer = vertx.eventBus().consumer(correlationId);

consumer.handler(message -> {
    message.reply("Received");
    consumer.unregister();
});

consumer.exceptionHandler(exception -> {
    System.out.println("error");
    consumer.unregister();
});

创建使用者后,可以使用延迟任务

vertx.setTimer(15000, l -> {
       System.out.println("error");
       consumer.unregister();
    });

最后走了这条路:

  public Observable<String> consume(){
        return Observable.<String>create(s -> {

            messageConsumer = vertx.eventBus().consumer(channel);

            messageConsumer.handler(message -> {
                message.reply(messageReply);
                unregister();
                s.onNext(message.body());
                s.onComplete();
            });

            messageConsumer.exceptionHandler(this::error);

        })
        .timeout(timeoutMillis, TimeUnit.MILLISECONDS)
        .doOnError(e -> {
            unregister();
        });
    }

  public void unregister(){
        if(messageConsumer != null) {
            messageConsumer.unregister();
        }
    }
公共可观测消费(){
返回可观察。创建(s->{
messageConsumer=vertx.eventBus().consumer(通道);
messageConsumer.handler(消息->{
message.reply(messageReply);
注销();
s、 onNext(message.body());
s、 onComplete();
});
messageConsumer.exceptionHandler(this::error);
})
.timeout(timeoutMillis,TimeUnit.millises)
.doon错误(e->{
注销();
});
}
公共作废注销(){
if(messageConsumer!=null){
messageConsumer.unregister();
}
}