从Vertx提供的通信方式开始
第一个集群节点启动
package org.example;
import com.hazelcast.config.Config;
import com.hazelcast.config.FileSystemXmlConfig;
import io.vertx.core.Vertx;
import io.vertx.core.VertxOptions;
import io.vertx.core.eventbus.EventBusOptions;
import io.vertx.spi.cluster.hazelcast.HazelcastClusterManager;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class AppCluster {
public static void main(String[] args) throws UnknownHostException {
final VertxOptions vertxOptions = new VertxOptions();
EventBusOptions eventBusOptions = new EventBusOptions();
String hostAddress = InetAddress.getLocalHost().getHostAddress();
vertxOptions.setEventBusOptions(eventBusOptions).getEventBusOptions().setHost(hostAddress);
HazelcastClusterManager clusterManager = new HazelcastClusterManager();
vertxOptions.setClusterManager(clusterManager);
Vertx.clusteredVertx(vertxOptions, res -> {
Vertx result = res.result();
result.deployVerticle(new MainClusterVerticle(), r -> {
if (r.succeeded()) {
System.out.println(MainClusterVerticle.class.getName() + " --> 部署成功");
} else {
r.cause().printStackTrace();
System.err.println(MainClusterVerticle.class.getName() + " --> 部署失败, " + r.cause().getMessage());
}
});
});
}
}
发布verticle服务
package org.example;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.json.JsonObject;
public class MainClusterVerticle extends AbstractVerticle {
public void start() {
System.out.println("start thread" + Thread.currentThread().getName());
vertx.eventBus().consumer("com.xiaoniu.bus", msg -> {
System.out.println("read thread" + Thread.currentThread().getName());
System.out.println("收到消息");
System.out.println(msg != null ? ((JsonObject) msg.body()).encodePrettily() : "没有消息");
JsonObject j = new JsonObject();
j.put("info", "我是Main")