在我的应用程序中,我在同一台计算机上的两个实例中部署了一个微服务,该微服务允许我使用infnispan将一些数据插入缓存中。首先,我只启动了一个实例,然后将相同的数据放入缓存中,但是当我启动第二个实例时,我注意到它们之间存在同步……这是正常的,因为第二个实例已加入集群。 (供您参考,即时消息使用jgroups进行集群)。 因此,当我调用服务以获取第二个实例的相同数据时,它没有应答,因为它处于同步阶段,因此他没有数据。但是当他完成时,他给了我答复;
所以我的问题是我怎么知道这两个实例之间的同步已终止? infinispan中有一种方法可以通知我infinispan中的节点之间的同步已完成吗?
感谢您的帮助
答案 0 :(得分:1)
这种同步称为“状态传输”,您可以使它处于阻塞状态(即节点在响应之前先等待初始传输),也可以使其不阻塞(这意味着它们立即响应请求,如果尚未响应则远程检索条目)还没有被转让)。 您可以通过注册https://github.com/hannehanen/NotWorkingCFXSpringBootRS
的缓存侦听器来接收状态转移完成的事件您可以通过在缓存状态传输配置中将DataRehashedEvent属性设置为false来使状态传输不阻塞