Я hv проверил несколько примеров, приведенных в руководстве ZMQ, но почему-то подписчик не получает сообщений в каких-либо. Вот код, который я пытаюсь проверить, но тщетно. Пожалуйста, исправьте это -ZeroMQ/JZMQ - Подписчик не получает сообщений
public class SyncPubTest {
protected static int SUBSCRIBERS_EXPECTED = 2;
public static void main (String[] args) {
Context context = ZMQ.context(1);
Socket publisher = context.socket(ZMQ.PUB);
publisher.bind("tcp://*:5561");
try {
//zmq??
Thread.sleep (1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
int update_nbr;
for (update_nbr = 0; update_nbr < 10; update_nbr++){
publisher.send("Rhubarb".getBytes(), ZMQ.NOBLOCK);
}
publisher.send("END".getBytes(), 0);
// publisher.close();
//context.term();
}
}
public class SyncSubTest {
public static void main(String[] args) {
Context context = ZMQ.context(1);
Socket subscriber = context.socket(ZMQ.SUB);
subscriber.connect("tcp://localhost:5561");
subscriber.subscribe("".getBytes());
int update_nbr = 0;
while (true) {
byte[] stringValue = subscriber.recv(0);
String string = new String(stringValue);
if (string.equals("END")) {
break;
}
update_nbr++;
System.out.println("Received " + update_nbr + " updates. :" + string);
}
//subscriber.close();
//context.term();
}
}
For some reason, context.term() hangs even all the sockets created in the context are closed.
Пожалуйста, помогите мне исправить эту проблему. Благодаря!!!
Спасибо! После запуска подписчика сначала он печатает первый символ «R», но не всю строку. Что-то не так в коде? – user2508012
На самом деле я могу это разрешить. Кажется, это была ошибка в старой версии. Я обновил JAR-файл до jzmq-2.1.3.jar, и теперь он показывает ожидаемые результаты. Большое спасибо за вашу помощь!! – user2508012