我正在使用vertx3。我尝试了3.0.0 - 3.1.0 -3.2.0-快照,所有这些都在发生。
为了简化这个问题,我创建了两个简单的Verticles。第一个用户充当消息的使用者,第二个用户通过事件总线发送消息。
问题是,eventBus看起来不工作,在集群中运行时,我会超时。
我不明白为什么第二个节点会加入集群,等等。
我把密码加在这里。
public class FirstVerticle extends AbstractVerticle {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public void start() {
getVertx().eventBus().consumer("test-service", message -> {
log.info(String.format("test-Service receive: %s", message));
message.reply("ok");
}).completionHandler(event -> {
if(event.succeeded()) log.info("complete handler");
else log.info("failed");
});
log.info("Done initializing");
}}
public class SecondVerticle extends AbstractVerticle {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public void start() {
log.info("Done initializing test");
getVertx().setPeriodic(2000L, id -> {
log.info("sending message test");
getVertx().eventBus().send("test-service", "hi", response -> {
if(response.succeeded()) log.info("success");
else log.info("error?");
});
});
}}
我的头晕
java -jar counter-service-1.0-SNAPSHOT-fat.jar -cluster -cluster-host 192.168.112.9还有第二个有:
java -jar test-service-1.0-SNAPSHOT-fat.jar -cluster -cluster-host 192.168.112.10我在cluster.xml中有以下FirstVerticle
<network>
<port auto-increment="true" port-count="10000">5701</port>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="false">
<multicast-group>224.2.2.3</multicast-group>
<multicast-port>54327</multicast-port>
</multicast>
<tcp-ip enabled="true" connection-timeout-seconds="10">
<interface>192.168.112.9</interface>
<interface>192.168.112.10</interface>
</tcp-ip>
</join>
<interfaces enabled="true">
<interface>192.168.112.*</interface>
</interfaces>
</network>
而这个cluster.xml在SecondVerticle中
<network>
<port auto-increment="true" port-count="10000">5701</port>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="false">
<multicast-group>224.2.2.3</multicast-group>
<multicast-port>54327</multicast-port>
</multicast>
<tcp-ip enabled="true" connection-timeout-seconds="10" >
<interface>192.168.112.9</interface>
<interface>192.168.112.10</interface>
</tcp-ip>
</join>
<interfaces enabled="true">
<interface>192.168.112.*</interface>
</interfaces>
</network>
当我运行第一个垂直线和第二个后,我有
Members [2] {
Member [192.168.112.9]:5701 this
Member [192.168.112.10]:5701
}和从第二个节点
Members [2] {
Member [192.168.112.9]:5701
Member [192.168.112.10]:5701 this
}但是我只从第二个节点
sending message test 10秒后
Message reply handler timed out as no reply was received - it will be removed
error? 这是发生在运行在不同的机器,但当运行在同一台机器,一切都运行良好。它们运行在CentOS中,防火墙被禁用,内部IP之间的通信很好.所以有什么想法吗?
谢谢,
发布于 2015-10-12 15:17:45
最后,我设法使它工作在不同的配置,使用tcp和多播.
基本上,主要的问题是防火墙的阻塞,或者组播没有启用。
另外,我遇到的一个问题是,当服务器有多个网络接口时,必须指定cluster.xml中的哪一种用途。
我创建了一个具有3种不同配置的github存储库,这些配置最终在集群中运行良好,希望它能有所帮助。
https://stackoverflow.com/questions/33040784
复制相似问题