B.5. Interop.Client, Interop.Server (request-response)
本例演示了基于代理的简单服务器,它将接受来自客户端的字符串,将其转换为大写,并将它们发回到客户端。它有两个组件:
- client - 向服务器发送行并打印响应。
- server - 将传入的字符串转换为大写的简单服务,并将它们返回到请求者。
在本例中,服务器和客户端共享名为 service_queue 的代理中的服务端点。服务器在服务端点中侦听消息。客户端创建临时动态 ReplyTo 队列,将临时名称嵌入到请求中,并将请求发送到服务器。在接收和处理每个请求后,服务器会将回复发送到客户端的临时 ReplyTo 地址。
Interop.Client 命令行选项
Command line:
Interop.Client [peerURI [loopcount]]
Default:
Interop.Client amqp://guest:guest@localhost:5672 1
Interop.Server 命令行选项
Command line:
Interop.Server [peerURI]
Default:
Interop.Server amqp://guest:guest@localhost:5672
Interop.Client, Interop.Server sample invocation
可使用这些命令行启动程序:
$ Interop.Server.exe amqp://guest:guest@localhost:5672
$ Interop.Client.exe amqp://guest:guest@localhost:5672
PeerToPeer.Server 在命令行给出的地址上创建一个监听程序。此地址初始化侦听传入连接的 ContainerHost 类对象。接收的消息异步转发到 RequestProcessor 类对象。
PeerToPeer.Client 会打开与服务器的连接,并开始向服务器发送消息。
PeerToPeer.Client 命令行选项
Command line:
PeerToPeer.Client [peerURI]
Default:
PeerToPeer.Client amqp://guest:guest@localhost:5672
PeerToPeer.Server 命令行选项
Command line:
PeerToPeer.Server [peerURI]
Default:
PeerToPeer.Server amqp://guest:guest@localhost:5672
PeerToPeer.Client, PeerToPeer.Server 示例调用
在一个窗口中运行 PeerToPeer.Server
$ PeerToPeer.Server.exe
Container host is listening on 127.0.0.1:5672
Request processor is registered on request_processor
Press enter key to exist...
Received a request hello 0
...
在另一个窗口中,运行 PeerToPeer.Client。PeerToPeer.Client 发送消息服务器,并在收到响应时打印响应。
$ PeerToPeer.Client.exe
Running request client...
Sent request properties(message-id:command-request,reply-to:client-57db8f65-6e3d-474c-a05e-8ca63b69d7c0) body hello 0
Received response: body reply0
Received response: body reply1
^C