java - Hazelcast 成员之间的高延迟(使用主题发布/onMessage)

标签 java azure delay messaging hazelcast

我正在使用 Hazelcast (v3.5.4) 主题来构建在两个 Azure VM(标准 D3)上运行的非常简单的聊天应用程序。

发布消息时,有时其他成员最多需要 15 秒才能收到。 我记录了发布和 onMessage 方法,以明确 hazelcast 导致了延迟。 没有网络延迟,应用程序和虚拟机使用的 CPU 资源几乎为零。 什么会导致这样的延迟?

对于消息传递,使用主题:

private ITopic<ChatMessage> eventTopic;

@PostConstruct
private void init() {
    eventTopic = hazelcastInstance.getTopic("chat-messages");
    eventTopic.addMessageListener(new ChatMessageListener());
}

public void publishMessage(final ChatMessage chatMessage) {
    log.debug("Publish message: " + chatMessage.toString());
    eventTopic.publish(chatMessage);
}

两个 Azure 虚拟机位于同一区域,并且这两个虚拟机之间的延迟 (Ping) 低于 5 毫秒。

禁用多播加入,使用静态 TcpJoin:

@Bean
public HazelcastInstance hazelcastInstance() {
    final Config config = new Config();
    NetworkConfig networkConfig = config.getNetworkConfig();

    networkConfig.setPort(5701);
    networkConfig.setPortAutoIncrement(true);
    networkConfig.setPortCount(3);
    networkConfig.getInterfaces()
        .addInterface("10.0.0.*")
        .setEnabled(true);
    final JoinConfig join = networkConfig.getJoin();
    join.getAwsConfig().setEnabled(false);
    join.getMulticastConfig().setEnabled(false);
    join.getTcpIpConfig().addMember("10.0.0.1-2").setEnabled(true);

    return HazelcastInstanceFactory.newHazelcastInstance(config);
}

Spring Boot 1.3 与 hazelcast-spring 3.5.4 一起使用

最佳答案

谢谢您的回复, 我在我使用的 MessageListener 中找到了延迟的原因

message.getPublishingMember().getSocketAddress().getHostName()

用于记录。 在 Windows 计算机上,getHostName 方法有时需要长达 15 秒的时间。

关于java - Hazelcast 成员之间的高延迟(使用主题发布/onMessage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209222/

相关文章:

java - 如何让java延迟几秒?

java - Scala/Java 中的等价锁?

c - 如何用karplus strong算法实现插值延迟线和全通滤波器?

java - 如何使用 Windows Java 客户端保存 Kerberos 服务票证?

azure - 在 Azure 中通过 powershell 删除号码并撤销 MFA session 的命令

azure - 无法通过 ARM 模板启动 AD Forest

python - 使用 Jupyter Notebook 使用 python 从存储在 azure 容器中的 zip blob 中提取特定文件

html - CSS3 动画延迟问题

java - 无法将带有 session 的请求转发到 JSP 页面

java - 客户端最好的垃圾收集设置是什么?