14.2. リクエスト/レスポンス C++ の例
この例では、リクエスト/応答パターンを使用するクライアントおよびサーバーです。サーバーはサービスキューを作成し、メッセージが到達するのを待機します。メッセージを受信すると、メッセージを送信元に送信します。
C++
Receiver receiver = session.createReceiver("service_queue; {create: always}");
Message request = receiver.fetch();
const Address& address = request.getReplyTo(); // Get "reply-to" from request ...
if (address) {
Sender sender = session.createSender(address); // ... send response to "reply-to"
Message response("pong!");
sender.send(response);
session.acknowledge();
}
クライアントはサービスキューの送信側を作成し、クライアントが応答キューの受信側を閉じたときに削除される応答キューも作成します。C++ クライアントでは、アドレスが文字で始まる場合は
#、一意の名前が指定されます。
C++
Sender sender = session.createSender("service_queue");
Receiver receiver = session.createReceiver("#response-queue; {create:always}");
Address responseQueue = receiver.getAddress();
Message request;
request.setReplyTo(responseQueue);
request.setContent("ping");
sender.send(request);
Message response = receiver.fetch();
std::cout << request.getContent() << " -> " << response.getContent() << std::endl;
クライアントは文字列 ping をサーバーに送信します。サーバーは、replyTo プロパティーを使用して応答 pong を同じクライアントに送信します。