有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在hazelcast中跨主线程和入口侦听器进行事务?

我有一个用图形(或者更具体地说是dag)表示的节点网络。顶点和边只是指向缓存中大型对象的ID

我使用的是hazelcast,有两个缓存:
1。图形的引用对象
2。用于大型对象的IMap
3。图中边的IMap

当我插入一个大对象时,我有一个条目侦听器,它将更新缓存中的这个图。类似地,当我添加边缘数据时,还有一个条目侦听器将更新图形

但是我有一个问题,如果我创建了一条边,它创建了一个循环,它会失败(因为它是dag),但IMap会保留记录

你知道如何在主线程和入口侦听器之间进行事务处理吗


共 (2) 个答案

  1. # 1 楼答案

    虽然这是一种完全不同的方法,但你看过Hazelcast Jet吗?这是一个基于DAG的事件流处理引擎,构建在Hazelcast IMDG之上。它可能更适合您的用例,并为您处理较低级别的内容

    https://jet.hazelcast.org

    你会有一个喷气机群,这也是一个Hazelcast群,但你可以用它获得所有的加工材料。它扩展了Java Streams编程模型,因此您只需像编写Java流一样编写应用程序,然后在集群上运行它。无论如何,还是要考虑一下

  2. # 2 楼答案

    @Pilo,问题是EntryListener侦听在地图中已经填充数据之后触发的事件。因此,当您将数据插入第一张地图时;听一个更新事件,数据已经在第一个映射中

    你也可以

    1. 如果第二个映射的操作失败,请手动从第一个映射中删除该记录
    2. 使用transactions&;确保全部或全部地图都已更新,而不是使用侦听器