ZeroMQ之模式 请求回应模型(Request-Reply)
来源:互联网 发布:帝国cms模板网 编辑:程序博客网 时间:2024/05/17 09:06
一、前言
ZeroMQ将消息通信分成4种模型,分别是一对一结对模型(Exclusive-Pair)、请求回应模型(Request-Reply)、发布订阅模型(Publish-Subscribe)、推拉模型(Push-Pull)。这4种模型总结出了通用的网络通信模型,在实际中可以根据应用需要,组合其中的2种或多种模型来形成自己的解决方案。
二、ZeroMQ之Hello World
一个简单的请求应答模型
特点:1:1消息通信模型,可以认为是一个TCP Connection ,但TCP Server只能接受一个连接,数据可以又向流动。
Server:
//// Hello World server in Java// Binds REP socket to tcp://*:5555// Expects "Hello" from client, replies with "World"//import org.zeromq.ZMQ;public class hwserver { public static void main(String[] args) throws Exception { ZMQ.Context context = ZMQ.context(1); // Socket to talk to clients ZMQ.Socket responder = context.socket(ZMQ.REP); responder.bind("tcp://*:5555"); while (!Thread.currentThread().isInterrupted()) { // Wait for next request from the client byte[] request = responder.recv(0); System.out.println("Received Hello"); // Do some 'work' Thread.sleep(1000); // Send reply back to client String reply = "World"; responder.send(reply.getBytes(), 0); } responder.close(); context.term(); }}
Client:
//// Hello World client in Java// Connects REQ socket to tcp://localhost:5555// Sends "Hello" to server, expects "World" back//import org.zeromq.ZMQ;public class hwclient { public static void main(String[] args) { ZMQ.Context context = ZMQ.context(1); // Socket to talk to server System.out.println("Connecting to hello world server..."); ZMQ.Socket requester = context.socket(ZMQ.REQ); requester.connect("tcp://localhost:5555"); for (int requestNbr = 0; requestNbr != 10; requestNbr++) { String request = "Hello"; System.out.println("Sending Hello " + requestNbr); requester.send(request.getBytes(), 0); byte[] reply = requester.recv(0); System.out.println("Received " + new String(reply) + " " + requestNbr); } requester.close(); context.term(); }}
在幕后发生了很多事,但是我们程序员关心的是代码是否简短和令人满意,甚至在重荷下它是否也不会经常崩溃掉。这是请求-应答模型,可能是0MQ中最简单的模型。它主要用于远程过程调用和典型的客户-服务器模式。
0 0
- ZeroMQ之模式 请求回应模型(Request-Reply)
- ActiveMQ实战篇之ActiveMQ实现request/reply模型(二)
- MsgServer 请求回应模式
- 基于request/reply模式的MQ例子
- ZeroMQ之通信模式
- Request-reply messaging
- Socket Channel (请求回应模式)
- Python实现ZeroMQ请求-应答模式
- ZeroMQ之push/pull模式
- ZeroMQ之PUSH/PULL模式
- ZeroMQ之PUB/SUB模式
- ZeroMQ之REP/REQ模式
- ZeroMQ之push/pull模式
- Sevlet篇之HttpServlet 请求 回应详解
- WCF操作:请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)
- Passive STS request to reply
- 【ZeroMQ】ZeroMQ及其模式
- ZeroMQ(java)入门之Requerst/Response模式
- usaco.setion1.3.skidesign(枚举)
- A段项目要求
- vector中删除第k个元素的巧妙方法
- 2、Xcode7的UIAlertController使用
- 双mvc框架
- ZeroMQ之模式 请求回应模型(Request-Reply)
- 大众点评数据平台架构变迁
- LeetCode 047 Permutations II
- cassandra 学习之旅<二> 集群安装
- cassandra 学习之旅<三> 内部认证与授权
- Android Studio--FrameWorks detected解决方法
- 安卓数据库框架LitePal(一):SQLite命令
- 内存监测工具 DDMS
- thread pool