JGroups не работает на разных машинах

Сделал коннектор к кластеру через jgroups. Мои экземпляры соединителей работают правильно и получают другие сообщения, когда они работают на одной машине, но они не перехватывают другие сообщения, когда они работают на двух разных машинах. Мой класс соединителя JGroups:

public class JGroupsMulticastConnector implements Sender, Listener {
    JChannel basicChannel = null;
    String clusterName = "";

    public JGroupsMulticastConnector( String clusterName) {
        this.clusterName = clusterName;
        try {
            basicChannel = new JChannel();

        } catch (Exception e) {
            MyLogger.error(e, name);
        }
    }

    public void init() {
        try {
            basicChannel.connect(clusterName);
            basicChannel.setReceiver(new ReceiverAdapter(){
                @Override
                public void receive(org.jgroups.Message msg) {
                    System.out.println(name+":"+"Got a Message");
                    super.receive(msg);
                }
            });

        } catch (Exception e) {
            MyLogger.error(e, name);
        }
    }

    public void shutdown() {

        basicChannel.disconnect();
    }

    @Override
    public void send(Message msg) {
        basicChannel.send(msg);
    }

}

person Saeed    schedule 28.07.2013    source источник


Ответы (1)


Если он работает на той же машине, ваш код в порядке. Скорее всего проблема с открытием - узлы друг друга не находят.

Посмотрите на настроенный стек и проверьте, какой протокол обнаружения вы используете. Если вы используете TCPPING (http://www.jgroups.org/javadoc/org/jgroups/protocols/TCPPING.html) необходимо перенастроить IP-адреса узлов.

Скорее всего, это будет MPING (http://www.jgroups.org/javadoc/org/jgroups/protocols/MPING.html), который использует многоадресную рассылку для обнаружения узлов. Убедитесь, что многоадресные сообщения отправляются между этими узлами. Как правило, брандмауэры обрывают эту многоадресную передачу (вы можете временно отключить брандмауэр для проверки).

Кроме того, убедитесь, что ваши сетевые компоненты не прерывают многоадресную передачу.

person Radoslav H.    schedule 27.08.2013