在两台计算机JVM之间使用Ignite集群的集群vertx事件总线

时间:2016-12-02 12:34:59

标签: javabeans vert.x ignite

我正在尝试使用集群事件总线和Ignite集群管理器,集群vertx本身工作正常并且集群vertx web现在我正在努力与2个apache集群中的集群事件总线点燃两台独立机器上的JVM

我知道以下内容:

1-我们在文档中看到Ignite集群对集群Vertx执行以下操作:集群管理器不处理事件总线节点间传输,这由Vert.x直接通过TCP连接完成。

2-现在的问题我们如何才能正确处理2台不同机器之间的集群vertx事件总线,集群事件总线需要知道公共集群主机和公共集群端口所以从附加的配置,请你告诉我们我们是怎么做的可以知道公共集群主机,也可能知道每台机器每个节点的端口,因此我们可以通过Ignite集群为集群vertx事件总线配置相同的内容吗?

在两台机器之间没有防火墙或VPN,网络在这两台机器之间打开,但事件总线无法在两台机器之间正确建立TCP连接,因为我无法看到两台机器之间的消息2台机器,它很快就超时了:

我们的群集配置就是这样:

<property name="discoverySpi">
    <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
        <property name="localPort" value="49500"/>
        <property name="localPortRange" value="20"/>
        <property name="ipFinder">
            <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                <property name="addresses">
                    <list>
                        <value>IP1{machine one IP}:49500..49520</value>
                        <value>IP2{machine two IP}:49500..49520</value>
                    </list>
                </property>
            </bean>
        </property>
    </bean>
</property>

并且看到消费者地址注册正确填充到所有节点

那么群集事件总线集群主机和端口的正确配置是什么才能使跨机器TCP连接正常工作?

1 个答案:

答案 0 :(得分:0)

Vert.x在事件总线通信中不使用任何Ignite配置设置。 Vert.x唯一能够在集群管理器中存储主题和订阅者(​​在您的案例中为Ignite集群)。您应该根据文档(http://vertx.io/docs/vertx-core/java/#event_bus)配置Vert.x事件总线:

  

事件总线配置需要在所有群集中保持一致   节点

     

EventBusOptions还允许您指定事件总线   是集群,端口和主机,就像使用setClustered一样,   getClusterHostgetClusterPort

在Vert.x群集启动之前,您无法获取Ignite节点地址。但是,在启动集群Vert.x实例之前,您应该提供Vert.x集群主机和端口设置(请参阅VertxOptions.setClusterHost()VertxOptions.setClusterPort())。

只有在容器中使用时,才应提供公共群集主机和公共群集端口。