Java Hazelcast发布订阅服务器,订阅服务器未接收消息

Java Hazelcast发布订阅服务器,订阅服务器未接收消息,java,hazelcast,Java,Hazelcast,下面是一个非常简单的例子: 我对其进行了一些修改,以使用字符串: --出版者 package org.ardlema.hazelcast; import com.hazelcast.core.*; import java.util.Date; public class Publisher { public static void main(String[] args) { HazelcastInstance hz = Hazelcast.newHazelcastIn

下面是一个非常简单的例子:

我对其进行了一些修改,以使用字符串:

--出版者

package org.ardlema.hazelcast;

import com.hazelcast.core.*;
import java.util.Date;

public class Publisher {

    public static void main(String[] args) {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        ITopic<String> topic = hz.getTopic("topic");
        topic.publish("Hello World");
    }
}
package org.ardlema.hazelcast;
导入com.hazelcast.core.*;
导入java.util.Date;
公共类出版商{
公共静态void main(字符串[]args){
HazelcastInstance hz=Hazelcast.newHazelcastInstance();
ITopic主题=hz.getTopic(“主题”);
主题。发布(“你好世界”);
}
}
--订户

package org.ardlema.hazelcast;

import java.util.Date;

import com.hazelcast.core.*;

public class Subscriber {
    public static void main(String[] args) {
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        ITopic<String> topic = hz.getTopic("topic");
        topic.addMessageListener(new MessageListenerImpl());
        System.out.println("Subscribed");
    }

    private static class MessageListenerImpl implements MessageListener<String> {
        public void onMessage(Message<String> m) {
            System.out.println("Received: " + m.getMessageObject());
        }
    }
}
package org.ardlema.hazelcast;
导入java.util.Date;
导入com.hazelcast.core.*;
公共类订户{
公共静态void main(字符串[]args){
HazelcastInstance hz=Hazelcast.newHazelcastInstance();
ITopic主题=hz.getTopic(“主题”);
topic.addMessageListener(新的MessageListenerImpl());
系统输出打印项次(“认购”);
}
私有静态类MessageListenerImpl实现MessageListener{
公共消息无效(消息m){
System.out.println(“接收:+m.getMessageObject());
}
}
}
我将它们作为两个独立的应用程序运行,首先运行订阅服务器,然后运行发布服务器。问题是订阅者从未收到发布的消息。为什么会这样

更新:我在另一台计算机上测试了完全相同的代码,它工作了…但我仍然需要让它在原始计算机上工作,但我仍然不确定为什么它不工作

很可能您的2个(嵌入式)Hazelcast实例没有形成一个集群。请检查发现部分。默认情况下,Hazelcast使用多播进行发现。您应该在日志中看到类似的内容

Members {size:2, ver:2} [
  Member [127.0.0.1]:5701 - e40081de-056a-4ae5-8ffe-632caf8a6cf1 this
  Member [127.0.0.1]:5702 - 93e82109-16bf-4b16-9c87-f4a6d0873080
]

上阅读更多信息,如果它在不同的机器上工作,则可能取决于您的环境。它工作的环境和“原始”环境之间有什么区别?主要区别是在Windows上测试的环境和在Linux上测试的环境。当我将pub/sub放在同一个java应用程序中时,它可以在Linux环境下工作,但当它是两个独立的应用程序时(这正是我所需要的)。我同意这很可能是环境中的某种东西,但具体哪些部分可能会导致它不工作?