我正在创建一个在我的服务器上运行的应用程序集群。 我在java中将Hazelcast-cluster与VertX结合使用。 现在我想将vertx事件总线扩展为在同一服务器上运行的NodeJs应用程序。
Hazelcast正在节点中运行并正确连接在JVM上运行的hazelcast成员
var HazelcastClient = require('hazelcast-client').Client;
var Config = require('hazelcast-client').Config;
var config = new Config.ClientConfig();
config.networkConfig.addresses = [{host: '127.0.0.1', port: '5701'}];
var map = {};
HazelcastClient.newHazelcastClient(config)
.then(function (hazelcastClient) {
map = hazelcastClient.getMap("persons");
});
});
有人可以帮助我使用eventbus部分吗?!?!
谢谢
答案 0 :(得分:0)
您无法使用Hazelcast节点客户端将Node应用程序与Vert.x群集连接起来。您需要使用Node应用程序中的桥接客户端设置事件总线桥。
请参阅示例仓库中的EventBus Bridge - Node.JS loader。
答案 1 :(得分:0)
经过长时间的搜索,我找到了问题的答案:我不得不放弃节点并在VertX本身提供的JVM中运行我的javascript应用程序。 现在,我可以使用JAVA应用程序对我的JS应用程序进行集群,并使用本机事件总线(无桥接器)
对于遇到相同情况的人,这是我的测试代码:
vertx-server.js:
var Vertx = require("vertx-js/vertx");
var options = {};
Vertx.clusteredVertx(options, function (res, res_err) {
if (res_err == null) {
var vertx = res;
var eventBus = vertx.eventBus();
console.log("We now have a clustered event bus: " + eventBus);
eventBus.consumer("system", function (message) {
console.log("I have received a system message: " + JSON.stringify(message.body()));
message.reply("ok from javascript");
});
eventBus.publish("system", "hoi van Javascript-node");
} else {
console.log("Failed: " + res_err);
}
});
安装所需的包: npm install vertx3-full
运行应用程序: ./node_modules/.bin/vertx运行vertx-server.js -cluster