gpt4 book ai didi

java - 0MQ ROUTER DEALER 范例在 Docker 容器中不起作用

转载 作者:行者123 更新时间:2023-12-02 01:23:00 24 4
gpt4 key购买 nike

尝试使用 0MQ ROUTER DEALER 范例在多个客户端和服务之间进行通信并完成工作。

客户端、代理和服务器在各自的 Docker 容器中运行如果我将客户端、代理、工作程序作为独立的 Java 程序而不是 Docker 容器运行,则一切正常。

客户端连接到路由器端口并发送消息,但没有得到代理的响应。

代理绑定(bind)到 ROUTER 和 DEALER 端口,但无法处理任何消息。

工作人员连接到 DEALER 端口,但未分配任何工作。

以下是客户端片段

        reqSocket = context.socket(SocketType.REQ);
String reqStr = "tcp://a.b.c.d:" + config.getRouterPort();
boolean ret = reqSocket.connect(reqStr);
String json;
json = objMap.writeValueAsString(req);
ret = reqSocket.send(json.getBytes(), 0);
byte[] recv = reqSocket.recv();

以下是经纪人片段

    routerSocket = context.socket(SocketType.ROUTER);
String routerString = "tcp://*:" + config.getRouterPort();
boolean ret = routerSocket.bind(routerString);

dealerSocket = context.socket(SocketType.DEALER);
String dealerString = "tcp://*:" + config.getDealerPort();
ret = dealerSocket.bind(dealerString);

ZMQ.proxy(routerSocket, dealerSocket, null);

以下是工作人员片段

        listener = context.socket(SocketType.REP);
String dealerStr = "tcp://a.b.c.d:" + config.getDealerPort();
boolean ret = listener.connect(dealerStr);
while (true) {
byte[] msg = listener.recv(0);
boolean ret = listener.send(objMap.writeValueAsBytes(processMessage(msg)), 0);
}

解决此问题的任何帮助或任何指示表示赞赏。

最佳答案

现在已通过使代理容器公开 DEALER 和 ROUTER 端口并将它们映射到主机上的端口来修复此问题。

关于java - 0MQ ROUTER DEALER 范例在 Docker 容器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57606064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com