java zeromq1

 

1.编译

git clone https://github.com/zeromq/jzmq.git

2.打开VC工程

cd  \jzmq\jzmq-jni\builds\msvc

打开msvc.sln

3.设置头文件和库文件路径

4.编译 选择x64

jzmq-jni\lib

5.将生成的jar 放到工程中

File->project structure->modules  +

选择zmq.jar

 

 

方法二

1.pom 文件:

<dependency>
    <groupId>org.zeromq</groupId>
    <artifactId>jeromq</artifactId>
    <version>0.4.3</version>
</dependency>

 

使用例子

public class ZmqServer {
   private ZMQ.Context pubContext=null;// = ZMQ.context(1);
   private ZMQ.Socket pubSocket=null;

    public ZmqServer() {
        pubContext = ZMQ.context(1);
        pubSocket =  pubContext.socket(ZMQ.PUB);
        pubSocket.bind("tcp://localhost:8989");
       // mqMsgHandleList = new ArrayList<>();
    }

    public void PubMsg(byte [] topic,byte[] msg){
        System.out.println("send "+new String(msg));
        if(pubSocket!=null){
            pubSocket.send(topic,ZMQ.SNDMORE);
            pubSocket.send(msg);
        }
    }

    public void SubMsg(byte [] topic,MqMsgHandle mqMsgHandle){
        if(mqMsgHandle !=null){
            new Thread(()->{
                ZMQ.Context context = ZMQ.context(1);
                ZMQ.Socket socket = context.socket(ZMQ.SUB);
                socket.subscribe(topic);
                socket.connect("tcp://localhost:8989");
                while (mqMsgHandle.getThreadRun()) {
                    byte[] topic1 = socket.recv(0);
                    byte[] data = socket.recv(0);
                    if (data != null)
                        mqMsgHandle.msgHandle(data);
                }
                System.out.println("thread sub "+new String(topic)+"stopped");
            }).start();
        }
    }
}

测试代码

 

public interface MqMsgHandle {
    boolean getThreadRun();
    void msgHandle(byte [] msg);
}

 

 class MqSerialMsgHandle implements MqMsgHandle{
        public boolean threadrun = true;
        @Override
        public void msgHandle(byte[] msg) {
            System.out.println("recv:"+new String(msg));
        }
        @Override
        public boolean getThreadRun() {
            return threadrun;
        }
    }

    @Test
    public void TestZmqServer() throws InterruptedException {
        ZmqServer zmqServer = new ZmqServer();
        MqSerialMsgHandle mqSerialMsgHandle = new MqSerialMsgHandle();
        zmqServer.SubMsg("serial".getBytes(),mqSerialMsgHandle);

        for(int i=0;i<10;i++){
            String msg = "hello"+i;
            zmqServer.PubMsg("serial".getBytes(),msg.getBytes());
            if(i==5)
                 mqSerialMsgHandle.threadrun = false;
            Thread.sleep(1000);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值