複数の Broker を相互に通信させることができません。それ以外はすべて期待どおりに機能します (プロデューサーとコンシューマーの間の通信を含む)。しかし、マルチキャストを使用して Broker が互いに通信するのを管理するにはどうすればよいでしょうか?
どんなアドバイスでも大歓迎です
これは私の環境です:
- ubuntu 12 を使用し、マルチキャストが動作する 10 個の仮想ホスト (ping テスト済み)
- すべてのホストで ActiveMQ を使用する Java アプリケーション
- すべてのホストはクライアント (Java-App) を開始し、すべてのクライアントはいくつかのエージェントを管理できます。エージェントは共通のジョブリストからいくつかのジョブを取得できます (現時点では「スリープ」を実行しているだけです)。
これらはブローカーの設定です
private String brokerUri;
private String brokerName;
private String brokerProtokol = "tcp://";;
private int brokerPort = 9999;
private String networkConName = "Network";
private String transportConName = "Transport";
private BrokerService broker;
brokerUri = Inet4Address.getLocalHost().getHostAddress();
brokerName = Inet4Address.getLocalHost().getHostName();
そして、これはおそらく正しくない抜粋されたコードです:
public void createBroker() throws UnknownHostException, InterruptedException{
try {
broker = new BrokerService();
TransportConnector transportCon = new TransportConnector();
NetworkConnector networkCon = new NetworkConnector(new URI("multicast://default")) {
};
broker.setBrokerName(brokerName);
transportCon.setUri(new URI(brokerProtokol+brokerUri+":"+brokerPort));
transportCon.setName(transportConName);
transportCon.setDiscoveryUri(new URI("multicast://default"));
final SystemUsage systemUsage = broker.getSystemUsage();
systemUsage.getMemoryUsage().setLimit(1024 * 1024 * 2); // 2 MB
systemUsage.getTempUsage().setLimit(1024L * 1024 * 1024 * 2); // 2 GB
systemUsage.getStoreUsage().setLimit(1024L * 1024 * 1024 * 2); // 2 GB
broker.setPersistent(true);
networkCon.setDuplex(true);
// broker.setUseJmx(true);
broker.addConnector(transportCon);
broker.addNetworkConnector(networkCon);
broker.start();