我有两个用 java vertx 编写的微服务。他们通过事件总线进行通信。第一个发送消息,第二个接收消息。
第一个想法:仅在单元测试中回复 Vertx 事件总线消息。
我想测试消息正在被正确处理,因此我在第二个微服务上编写单元测试来检查回复
eventbus.send("address", message, reply -> {
if (reply.succeeded()) {
context.async().complete();
} else {
context.fail();
}});
现在我必须在我的消费者中发送回复,但我只想在测试中这样做,我不需要在生产中发送回复。我不想消耗 cpu 和网络在生产中发送回复。所以我正在寻找的是这样的:
vertx.eventBus().consumer("address", handler -> {
Boolean success = methodMayFail();
if ( MY_CONTEXT_IS_TEST || HANDLER_IS_LOCAL_AS_I_ONLY_SENT_LOCAL_MESSAGES_FROM_TEST) {
success ? handler.reply("ok") : handler.fail();
}
});
第二个想法是在cdelmas 评论之后出现的,在我自己的回答中