Spring中集成Hazelcast遇到的问题

发布于 2021-11-01 21:18:02 字数 1143 浏览 642 评论 1

最近在cms项目中出现了一个bug,该项目是集群部署的,程序中使用了缓存(非分布式缓存),导致多台服务器信息不一致的情况,在网上搜了下,发现Hazelcast可以很容易解决这样的问题,后来了解Hazelcast后,在Spring中集成了Hazelcast,可发现没有像文档中说的那样简单,老是出现问题,出现的第一个问题,就是下面一段代码出现注入的参数类型不一致问题:

<bean id="instance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance">
    <constructor-arg>
        <bean class="com.hazelcast.config.Config">
            <property name="groupConfig">
                <bean class="com.hazelcast.config.GroupConfig">
                    <property name="name" value="dev"/>
                    <property name="password" value="pwd"/>
                </bean>
            </property>
            <!-- and so on ... -->
        </bean>
    </constructor-arg>
</bean>
<bean id="map" factory-bean="instance" factory-method="getMap">
    <constructor-arg value="map"/>
</bean>

后来为了实例化上面这个类,我自己封装到了代码中,没有使用上面的配置文件,这个问题解决后,后面又写了一些测试代码,想测试一下分布式数据共享是否真能起作用,到最后程序部署完毕并测试的时候,发现多台服务器之间相同的变量数据还是不一致,不知道是怎么回事?当然我写了一个简单的demo测试是成功的,希望高手给我解答一下,纠结了很长时间,非常感谢!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃颗糖壮壮胆 2021-11-05 04:46:40

hazelcast的使用有点特殊。如果修改了一个对象的内容,必须put回到原来的集合中,才能起作用。

看下面的code.

Map map = ...

map.put("1", new MyObj());

map.get("1").setName("test");

map.get("1").getName();//对于普通的集合来说,这应该有值,但是hazelcast的没有。

必须hazelcast.put("1",obj)之后修改才能起作用,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文