当前位置: 首页 > 工具软件 > JeroMQ > 使用案例 >

ZeroMQ: Java ZMQ库JeroMQ的用法(一)请求/响应模式

侯兴为
2023-12-01

转载请标明来源:https://blog.csdn.net/SingingFisher/article/details/87068868

 

目录

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

这是客户端。

四、总结

请求/响应模式还是很简单的。

 类似资料: