问题描述
我想使用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 (将#修改为@)