(1)ZeroMQ: Java ZMQ库JeroMQ的用法(一)请求/响应模式
(2)ZeroMQ: Java ZMQ库JeroMQ的用法(二)发布/订阅模式
ZeroMQ,又名ZMQ,是一款用C语言编写的消息队列(消息中间件),位于应用层和传输层中间,可以用TCP协议或者UDP协议实现。
JeroMQ是其Java实现,用起来也是十分方便。
学习ZMQ的肯定Maven用的溜溜的,我就不啰嗦了。去Maven上搜一下ZeroMQ,不要搞错了,这个才是https://mvnrepository.com/artifact/org.zeromq/jeromq。
我直接贴上来0.4.3版本的:
<!-- https://mvnrepository.com/artifact/org.zeromq/jeromq -->
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.4.3</version>
</dependency>
请求响应模式很好理解,一个客户端,一个服务器端,客户端发一个请求,服务器端回应一下,客户端收到回应,可以再发一个请求,如此循环往复。
注意一下,客户端的顺序一定是:发送->接受->发送....., 服务器端的顺序一定是:接受->发送->接受.....
直接上代码:
import org.zeromq.ZMQ;
public class Response {
public static void main(String args[]){
ZMQ.Context context=ZMQ.context(1); //I/O线程上下文的数量为1
ZMQ.Socket socket=context.socket(ZMQ.REP); //ZMQ.REP表示这是一个reponse类型的socket
socket.bind("tcp://*:8888"); //绑定到8888端口
while (true){
byte[] request = socket.recv();
if (new String(request).equals("END"))
break;
System.out.println("Response recv:\t"+new String(request));
String response="I got it";
socket.send(response.getBytes());
}
//关闭
socket.close();
context.term();
}
}
这是服务器端。
import org.zeromq.ZMQ;
public class Request {
public static void main(String args[]){
ZMQ.Context context=ZMQ.context(1); //I/O线程上下文的数量为1
ZMQ.Socket socket=context.socket(ZMQ.REQ); //ZMQ.REQ表示这是一个request类型的socket
socket.connect("tcp://127.0.0.1:8888"); //连接到8888端口
for (int i = 0; i < 10; i++) {
long now = System.currentTimeMillis();
String request = "hello, time is "+now;
socket.send(request.getBytes());
byte[] response=socket.recv();
System.out.println("Request recv:\t"+new String(response));
}
socket.send("END".getBytes());
//关闭
socket.close();
context.term();
}
}
这是客户端。
请求/响应模式还是很简单的。