如何使用节点中的hazelcast连接到vertx事件总线

时间:2017-05-11 12:08:33

标签: node.js hazelcast vert.x

我正在创建一个在我的服务器上运行的应用程序集群。 我在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部分吗?!?!

谢谢

2 个答案:

答案 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