当尝试将Quarkus(版本 2.9.2.Final)EventBus requestAndForget与@ConsumeEvent返回void的方法一起使用时,即使处理没有任何问题,日志中也会出现以下异常。
好的
2022-06-07 09:44:04,064 错误 [io.qua.mut.run.MutinyInfrastruct] (vert.x-eventloop-thread-1) Mutiny 必须放弃以下异常: (TIMEOUT,-1) 超时等待 30000(ms) 回复。地址:__vertx.reply.3,回复地址:receivedSomeEvent
消费者代码:
@ApplicationScoped
public class ConsumerManiac{
@ConsumeEvent(value = "receivedSomeEvent")
public void consume(SomeEvent someEvent ) {
System.out.println("OK");
}
}
Run Code Online (Sandbox Code Playgroud)
生产者代码(REST 端点):
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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果将消费者方法更改为返回某个值,则不会出现日志中的异常。
@ApplicationScoped
public class ConsumerManiac{
@ConsumeEvent(value = "receivedSomeEvent")
public String consume(SomeEvent someEvent ) {
System.out.println("OK");
return "ok";
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何缺失的代码片段丢失,因此不会发生异常(即使处理结束时没有任何问题)?
参考:https ://quarkus.io/guides/reactive-event-bus#implementing-fire-and-forget-interactions
完整的堆栈跟踪:
2022-06-07 09:44:04,064 错误 [io.qua.mut.run.MutinyInfrastruct] (vert.x-eventloop-thread-1) Mutiny 必须放弃以下异常: (TIMEOUT,-1) 超时等待 30000(ms) 回复。地址:__vertx.reply.3,回复地址:在io.vertx.core.eventbus.impl.ReplyHandler.handle(ReplyHandler.java:76)处收到一些事件 在io.vertx.core.eventbus.impl.ReplyHandler.handle(ReplyHandler.java) :24)在io.vertx.core.impl.VertxImpl $InternalTimerHandler.handle(VertxImpl.java:893)在io.vertx.core.impl.VertxImpl $InternalTimerHandler.handle(VertxImpl.java:860)在io.vertx。 core.impl.EventLoopContext.emit(EventLoopContext.java:50) 在 io.vertx.core.impl.DuplicatedContext.emit(DuplicatedContext.java:168) 在 io.vertx.core.impl.AbstractContext.emit(AbstractContext.java: 53) 在 io.vertx.core.impl.VertxImpl$InternalTimerHandler.run(VertxImpl.java:883) 在 io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) 在 io.netty.util.concurrent .ScheduledFutureTask.run(ScheduledFutureTask.java:170)在io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)在io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)在io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503)在io.netty.util.concurrent.SingleThreadEventExecutor $4.run(SingleThreadEventExecutor.java:986)在io.netty.util.internal.ThreadExecutorMap $2。运行(ThreadExecutorMap.java:74)在io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)在java.base/java.lang.Thread.run(Thread.java:833)
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |