java - 在 Java 中使用 SUB 与 ZeroMQ 没有消息匹配

标签 java python zeromq jzmq

我正在尝试将 Java 客户端与 ZeroMQ 一起使用。订阅任何前缀时,Java 客户端不会匹配任何消息,尽管类似的 Python 客户端会按预期匹配消息。

Python 服务器

context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5556")

for i in range(100):
    r = "XXX " + i
    socket.send_string(r)

    time.sleep(random.randint(0,10))

Python 客户端工作正常

context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:5556")

zip_filter = "XXX"
socket.setsockopt_string(zmq.SUBSCRIBE, zip_filter)

for update_nbr in range(5):
    s = socket.recv_string()
    print(s)

Java 客户端未匹配任何消息

context = ZMQ.context(1);
subscriber = context.socket(ZMQ.SUB);
subscriber.connect("tcp://localhost:5556");

String filter = "XXX";
subscriber.subscribe(filter.getBytes(Charset.forName("UTF-8")));
while (true) {
  String msg = subscriber.recvStr(0, Charset.forName("UTF-8"));
  // ...
}

使用上述Python服务器,Python客户端按预期匹配所有以XXX开头的消息。

使用相同的 Python 服务器,Java 客户端不匹配任何消息

您知道 Java 客户端中调用 subscribe() 有什么问题吗?

最佳答案

好吧,我重新创建了你的配置,遗憾的是,一切都工作正常 - 无论是在 python 还是 java 中。 (这是证据)enter image description here )

Java代码:

public class Client {

    public static void main(String[] args) {
        final Context context = context(1);
        final Socket subscriber = context.socket(SUB);
        subscriber.connect("tcp://localhost:5556");

        String filter = "XXX";
        subscriber.subscribe(filter.getBytes(Charset.forName("UTF-8")));
        while (true) {
            String msg = subscriber.recvStr();
            System.out.println(msg);
        }
    }
}

Maven 依赖:

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

zeromq版本:4.1.0

您使用什么版本的 jeromq?我什至没有方法 recvStr(int, Java.nio.charset.Charset)。

关于java - 在 Java 中使用 SUB 与 ZeroMQ 没有消息匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214845/

相关文章:

java - GWT 支持类型转换吗?

java - pdfbox:尝试解密 PDF

python - Django 管理命令和 argparse

python - 如何从一段json文件中获取数据

c++ - 以 "almost always auto"样式初始化 ZeroMQ 2.2 消息要使用私有(private)构造函数

c++ - zeromq c 识别客户端

java - 提供服务器中生成并存储在内存中的 zip 文件

java - 如何使用 Rest-Assured 请求 POST API 发送 token 和正文值?

调用函数时python 'module'对象不可调用

python - 如何在 python 中限制 ZMQ (ZeroMQ - PyZMQ) 队列缓冲区大小?