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