이 프로그램의 스레드가 잠금 단계에서 작동 할 것으로 예상했습니다. 그러나 송신자는 수신자가 따라 가기를 기다리기 전에 ~ 60000 개의 메시지를 보냅니다. HWM에 대해 내가 잘못 이해 한 점은 무엇입니까?jzmq가 XREP에서 HWM을 무시하는 것 같습니다
수신자 스레드를 시작하지 않으면 두 번째 메시지를 보내려고 할 때 보낸 사람이 차단됩니다.
public static void main(String[] args) throws Exception {
new Thread() {
@Override
public void run() {
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.XREP);
socket.setHWM(1);
socket.bind("tcp://127.0.0.1:8080");
while (true) {
try {
socket.recv(0);
byte[] msg = socket.recv(0);
System.out.println("Received: " + new String(msg, "UTF-8"));
Thread.sleep(1000);
} catch (Exception ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}.start();
new Thread() {
@Override
public void run() {
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.XREQ);
socket.setHWM(1);
socket.connect("tcp://127.0.0.1:8080");
Integer i = 1;
while (true) {
System.out.println("Sending: " + i);
socket.send(i.toString().getBytes(), 0);
i++;
}
}
}.start();
}