首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vertx3 - EventBus不在集群中工作

Vertx3 - EventBus不在集群中工作
EN

Stack Overflow用户
提问于 2015-10-09 14:26:27
回答 1查看 3.2K关注 0票数 3

我正在使用vertx3。我尝试了3.0.0 - 3.1.0 -3.2.0-快照,所有这些都在发生。

为了简化这个问题,我创建了两个简单的Verticles。第一个用户充当消息的使用者,第二个用户通过事件总线发送消息。

问题是,eventBus看起来不工作,在集群中运行时,我会超时。

我不明白为什么第二个节点会加入集群,等等。

我把密码加在这里。

代码语言:javascript
复制
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");
}

}

代码语言:javascript
复制
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?");
        });
    });
}

}

我的头晕

代码语言:javascript
复制
java -jar counter-service-1.0-SNAPSHOT-fat.jar -cluster -cluster-host 192.168.112.9

还有第二个有:

代码语言:javascript
复制
java -jar test-service-1.0-SNAPSHOT-fat.jar -cluster -cluster-host 192.168.112.10

我在cluster.xml中有以下FirstVerticle

代码语言:javascript
复制
<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中

代码语言:javascript
复制
<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>

当我运行第一个垂直线和第二个后,我有

代码语言:javascript
复制
Members [2] {

Member [192.168.112.9]:5701 this

Member [192.168.112.10]:5701

}

和从第二个节点

代码语言:javascript
复制
Members [2] {

Member [192.168.112.9]:5701

Member [192.168.112.10]:5701 this

}

但是我只从第二个节点

代码语言:javascript
复制
sending message test 

10秒后

代码语言:javascript
复制
Message reply handler timed out as no reply was received - it will be removed 

error? 

这是发生在运行在不同的机器,但当运行在同一台机器,一切都运行良好。它们运行在CentOS中,防火墙被禁用,内部IP之间的通信很好.所以有什么想法吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 15:17:45

最后,我设法使它工作在不同的配置,使用tcp和多播.

基本上,主要的问题是防火墙的阻塞,或者组播没有启用。

另外,我遇到的一个问题是,当服务器有多个网络接口时,必须指定cluster.xml中的哪一种用途。

我创建了一个具有3种不同配置的github存储库,这些配置最终在集群中运行良好,希望它能有所帮助。

https://github.com/mustaine/vertx3-ping-pong

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33040784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档