4.2. EventBus の変更点

以下のセクションでは、EventBus の変更点を説明します。

4.2.1. EventBus の request-response 送信メソッドを削除

EventBus.send(…​, Handler<AsyncResult<Message<T>>>) メソッドおよび Message.reply(…​, Handler<AsyncResult<Message<T>>>) メソッドが削除されました。これらのメソッドにより、Eclipse Vert.x 4 でオーバーロードの問題が生じました。Future<Message<T>> メソッドのバージョンが、fire および forget バージョンと競合します。

request-response メッセージングパターンでは、新しい request メソッドおよび replyAndRequest メソッドを使用する必要があります。

  • EventBus.send(…​, Handler<AsyncResult<Message<T>>>) の代わりに EventBus.request(…​, Handler<AsyncResult<Message<T>>>) メソッドを使用してメッセージを送信します。
  • Message.reply(…​, Handler<AsyncResult<Message<T>>>) の代わりに Message.replyAndRequest(…​, Handler<AsyncResult<Message<T>>>) メソッドを使用して、メッセージに応答します。

以下の例は、Eclipse Vert.x 3.x リリースのメッセージへの要求および応答を示しています。

Request
eventBus.send("the-address", body, ar -> ...);
応答
eventBus.consumer("the-address", message -> {
       message.reply(body, ar -> ...);
});

以下の例は、Eclipse Vert.x 4 のメッセージへの要求および応答を示しています。

Request
eventBus.request("the-address", body, ar -> ...);
応答
eventBus.consumer("the-address", message -> {
  message.replyAndRequest(body, ar -> ...);
});