有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 0MQ路由器经销商范例在Docker容器中不工作

尝试使用0MQ路由器经销商范例在多个客户端和服务之间进行通信并完成工作

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

cient连接到路由器端口并发送消息,但未从代理收到响应

代理绑定到路由器和经销商端口,但无法处理任何消息

工人连接到经销商端口,但未分配任何工作

下面是客户端代码段

        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);
        }

任何帮助解决此问题或任何指针都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    现在,通过让代理容器公开经销商和路由器端口,并将它们映射到主机上的端口,这一问题已经得到解决