vert.x数据报套接字不起作用

问题描述

我想使用vert.x的DatagramSocket将消息广播到我的微服务的其他实例。如下代码(不是完整代码):

private DatagramSocket socket = VERTX.createDatagramSocket(options);

socket.listen(5225,host,new Handler<AsyncResult<DatagramSocket>>() {
            @Override
            public void handle(AsyncResult<DatagramSocket> listenResult) {
                if (listenResult.succeeded()) {
                    log.info("start success");
                    socket.handler(new Handler<DatagramPacket>() {
                        @Override
                        public void handle(DatagramPacket packet) {
                            log.info("get packet from group");
                        }
                    });

                    socket.listenMulticastGroup("230.0.0.1",new Handler<AsyncResult<DatagramSocket>>() {
                        @Override
                        public void handle(AsyncResult<DatagramSocket> groupResult) {
                            if (groupResult.succeeded()) {
                                log.info("{} join group success",name);
                            } else {
                                log.error("{} joint group Failed,{}",name,groupResult.cause());
                            }
                        }
                    });
                } else {
                    log.error("{} distribute event bus start Failed",name);
                }

            }
        });

我的广播消息代码如下:

socket.send(buffer,5225,"230.0.0.1",asyncResult -> {
            if (asyncResult.Failed()) {
                log.error("send message to group Failed ",asyncResult.cause());
            } else {
                log.info("send message to group success");
            }
        });

socket也创造了成功,也加入了群组。我的代码部署在docker中,下面是网络信息

netstat -nap | grep 5225

udp        0      0 172.16.0.59:5225        0.0.0.0:*                           420/java

netstat -gn

IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      224.0.0.1
eth0            1      230.0.0.1
eth0            1      224.0.0.1
lo              1      ff02::1
lo              1      ff01::1
eth0            1      ff02::1
eth0            1      ff01::1

ifconfig eth0

eth0: flags=4163<UP,broADCAST,RUNNING,MULTICAST>  mtu 1442
        inet 172.16.0.59  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:55:ac:10:00:3b  txqueuelen 1000  (Ethernet)
        RX packets 7437  bytes 707007 (690.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3303  bytes 393216 (384.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

路线-n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.0.49     0.0.0.0         UG    0      0        0 eth0
10.10.10.0      172.16.0.49     255.255.255.0   UG    0      0        0 eth0
169.254.169.254 172.16.0.49     255.255.255.255 UGH   0      0        0 eth0
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

问题一个微服务实例发送消息成功(日志打印成功),但是另一个微服务实例无法接收任何数据包,怎么了?帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)