当前位置: 首页 > 知识库问答 >
问题:

Hazelcast ITopic和侦听器崩溃

海宁
2023-03-14

我有一个使用ITopic的多节点集群Hazelcasthtml" target="_blank">应用程序。我试图了解,为了在节点崩溃时正确“清理”事情,我的应用程序是否应该检测节点崩溃并删除该节点的注册ID,或者Hazelcast是否会自动处理该问题。

我所说的“节点崩溃”是指Hazelcast集群中的应用程序在没有调用ITopic的情况下意外终止。removeMessageListener或HazelcastInstance。关闭。这可能是由于应用程序崩溃或被杀死或主机崩溃。

说来话长,以防万一。我不知道Hazelcast的内部结构,在文档中也找不到任何相关内容。然而,我可以想出几种“自动”清理的方法:1。在每个节点上,Hazelcast保留所有本地和远程订阅者的列表。当它检测到另一个节点不可用时,Hazelcast会自动从ITopic订阅者列表中删除该另一个节点的侦听器。2、在每个节点上,Hazelcast只保留一个本地订阅者列表。当出版商调用ITopic时。发布时,Hazelcast将消息发送到所有节点。收到消息后,每个节点上的Hazelcast在所有本地订阅者上调用onMessage。

这是一个示例场景。假设我有一个Hazelcast集群,它有2个节点,A和B。节点A和节点B都通过ITopic.addMessageListener将侦听器注册到同一个ITopic。

让我们假设节点B在没有调用ITopic的情况下崩溃。removeMessageListener或HazelcastInstance。关闭

最终,节点A上的Hazelcast检测到节点B不可用。

现在让我们假设节点A上的发布者调用ITopic.publish.A上的Hazelcast是否仍然尝试将消息发送给B上的订阅者?让我们假设一段时间后节点B重新启动,A上的发布者调用ITopic.publish.A上的Hazelcast是否仍然尝试将消息发送给B上的旧订阅者?

提前谢谢你。

共有1个答案

穆高澹
2023-03-14

Hazelcast将在死亡检测时自动删除死亡节点的侦听器。如果这没有发生(我想你可能有理由问),这就是一个bug。

Hazelcast在被识别为死节点后也不会尝试将事件发送到死节点,这意味着在节点B的禁欲下发送的事件不会在节点返回时重新传递。旧的死节点B和新连接的节点之间没有相关性。

这回答了问题吗?:)

 类似资料:
  • 我们有web服务(jaxws),它正在调用另一个web服务(aslo jaxws)。Jaxws客户端配置如下所示-- 正如您所看到的,我们有两个拦截器和一个故障侦听器。我们希望在这些拦截器、故障侦听器和web服务代码之间进行通信。正如SO线程中所述,我们使用cxf交换对象在web服务和拦截器之间进行通信。 我们的inFaultInterceptor代码如下所示-- } Web服务代码如下所示- 但

  • 我已经用spring boot实现了jms,我正在使用@JmsListener来听这个主题 现在,我需要一个侦听器来侦听阻塞队列,如果它有值,则进行处理。我们可以在spring boot中使用注释来实现这一点吗?

  • 问题内容: 我当时在上网,但找不到很好的信息。我试图在每次运行应用程序时检测按键。我正在使用JavaFX并将其与FXML一起运行。我尝试了很多事情,但没有任何效果。请帮我。 问题答案: 您应该签出Ensemble示例。这是关键的侦听器代码。

  • 我正在使用Realex Payments的HPP API开发一个卡支付页面,其中包含一个iFrame,用于托管Realex页面。在Realex请求表单上,我将字段HPP_POST_维度和HPP_POST_响应设置为我的URL,如下所示: 付款页: www.example.com/account/payment.html 隐藏字段值用于在HPP页面大小更改和事务完成时,使用事件侦听器将数据从Real

  • 虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过watch选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。例如: <div id="watch-example"> <p> Ask a yes/no question: <input v-model="question">

  • 1. 前言 本节介绍侦听器 watch 的使用方法。包括什么是侦听器,侦听器的特点,以及如何对不同类型的数据进行监听。其中重点掌握对不同类型的数据如何使用侦听器,了解它之后,在才能在之后的日常开发中熟练运用。 2. 慕课解释 Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。 — 官方定义 侦听器 watch 是 Vue 提供的一种用来观察和响应 Vue 实例上的数据