2017-05-11 79 views
2

我創建了一個在我的服務器上運行的應用程序集羣。 在Java中,我將Hazelcast-cluster與VertX結合使用。 現在,我將lite將vertx事件總線擴展爲在同一臺服務器上運行的NodeJs應用程序。如何使用節點中的hazelcast連接到vertx事件總線

Hazelcast在節點上運行,並在JVM上

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"); 
    }); 
}); 

運行hazelcast成員有人可以幫我eventbus部分正確連接?!?!

感謝

回答

0

不能使用Hazelcast節點客戶端節點應用程序與Vert.x集羣連接。您需要在Node應用程序中使用橋客戶端來設置事件總線橋。

請參閱示例回購中的EventBus Bridge - Node.JS loader

0

經過一番漫長的搜索後,我發現了我的問題的答案:我必須放開節點並在VertX自身提供的JVM中運行我的JavaScript應用程序。 現在我可以用JAVA應用集羣我JS應用程序並使用本地eventbus(不包括橋)

對於任何人誰沿着相同的情況下到來的時候,這裏是我的測試代碼:

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安裝vertx3全

來運行應用程序: ./node_modules/.bin/vertx運行vertx-server.js -cl uster

相關問題