Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Quarkus EventBus requestandforget - timeout error in logs

Tags:

quarkus

When trying to use Quarkus (version 2.9.2.Final) EventBus requestAndForget with a @ConsumeEvent method that returns void, the following exception occurs in the logs, even though the processing occurs without any problem.

OK

2022-06-07 09:44:04,064 ERROR [io.qua.mut.run.MutinyInfrastructure] (vert.x-eventloop-thread-1) Mutiny had to drop the following exception: (TIMEOUT,-1) Timed out after waiting 30000(ms) for a reply. address: __vertx.reply.3, repliedAddress: receivedSomeEvent

The consumer code:

@ApplicationScoped
public class ConsumerManiac{
  @ConsumeEvent(value = "receivedSomeEvent")
  public void consume(SomeEvent someEvent ) {

    System.out.println("OK");
  }
}

The Producer code (a REST Endpoint):

public class SomeResource {
  private final EventBus eventBus;

  @Inject
  public SomeResource (EventBus eventBus) {

    this.eventBus = eventBus;
  }

  @POST
  public Response send(@Valid SomeEvent someEvent) {

    eventBus.requestAndForget("receivedSomeEvent", someEvent);

    return Response.accepted().build();
  }
}

If the consumer method is changed to return some value, then the exception in logs does not occur.

@ApplicationScoped
public class ConsumerManiac{
  @ConsumeEvent(value = "receivedSomeEvent")
  public String consume(SomeEvent someEvent ) {

    System.out.println("OK");

   return "ok";
  }
}

Is there any missing piece of code that is missing so the exception does not occur (even though processing concludes without any problem)?

Reference: https://quarkus.io/guides/reactive-event-bus#implementing-fire-and-forget-interactions

Full stacktrace:

2022-06-07 09:44:04,064 ERROR [io.qua.mut.run.MutinyInfrastructure] (vert.x-eventloop-thread-1) Mutiny had to drop the following exception: (TIMEOUT,-1) Timed out after waiting 30000(ms) for a reply. address: __vertx.reply.3, repliedAddress: receivedSomeEvent at io.vertx.core.eventbus.impl.ReplyHandler.handle(ReplyHandler.java:76) at io.vertx.core.eventbus.impl.ReplyHandler.handle(ReplyHandler.java:24) at io.vertx.core.impl.VertxImpl$InternalTimerHandler.handle(VertxImpl.java:893) at io.vertx.core.impl.VertxImpl$InternalTimerHandler.handle(VertxImpl.java:860) at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:50) at io.vertx.core.impl.DuplicatedContext.emit(DuplicatedContext.java:168) at io.vertx.core.impl.AbstractContext.emit(AbstractContext.java:53) at io.vertx.core.impl.VertxImpl$InternalTimerHandler.run(VertxImpl.java:883) at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:833)

like image 226
pringi Avatar asked Oct 18 '25 02:10

pringi


2 Answers

documentation is not correct.

request expect a response. You want to use send and not request.

see https://github.com/quarkusio/quarkus/issues/31045

like image 134
Aliaksandr Sebiashuk Avatar answered Oct 22 '25 05:10

Aliaksandr Sebiashuk


I had to return arbitrary value to avoid this exception.

like image 28
R. Darman Avatar answered Oct 22 '25 04:10

R. Darman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!