就像这个操作看起来一样简单,我找不到任何关于如何使用 ZMQ (Jeromq) 接收多部分消息的文档。我检查了指南,但它只包含带有此信息的 C 代码,而且无论我收到什么类型的消息,我似乎都应该以相同的方式接收消息。
实际上,我使用以下代码在两条消息中收到多部分消息:
while (running.get()) {
items.poll();
if (items.pollin(0)) {
ByteArray message = receiver.recv(0);
System.out.println("Received " + String(message, Charset.forName("UTF-8")));
}
}
如果我发送这样的多部分消息,“已接收”部分将被打印两次:
publisher.sendMore(message.key);
publisher.send(objectMapper.writeValueAsString(message.data));
我究竟做错了什么?
编辑:C
我知道示例下方有一个语言选择器,但是在任何仅与代码内联解释的示例中都不存在此特定问题。
编辑
我试图探索 API 并找到了hasReceiveMore()
方法。我尝试使用它,但它没有用,我最终使用以下代码进行了无限循环:
List<String> parts = new ArrayList<>();
while(receiver.hasReceiveMore()) {
parts.add(receiver.recvStr());
}