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();
}
}