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