我正在研究一个用例,其中 ignite 必须侦听数据网格中对象属性的更改并对该对象执行一些操作。为了性能,我希望在数据所在的同一节点上完成处理。
如何在对象的属性更改为特定值时获取事件(例如,对象'
X
'有一个属性' '从' 'state
设置为' ')并确保仅从节点获取事件对象住在哪里?scheduled
created
我如何确保当我得到事件并开始处理它时,在处理完成之前没有其他人更改对象(只允许读取)(换句话说,一旦事件被拾取,事务就会开始)?
如何确保处理代码部署到所有节点(处理是无状态的)并且它只对本地数据进行操作(数据对象和代码之间没有硬链接,换句话说,如果处理代码在未来,物体保持不变)
我从文档中得到的内容如下:
// Local listener that listenes to local events.
IgnitePredicate<CacheEvent> locLsnr = evt -> {
// CODE
return result;
};
// Subscribe to specified cache events occuring on local node.
ignite.events().localListen(locLsnr,
EventType.EVT_CACHE_OBJECT_PUT);
在
CODE
街区;我必须检查state
' ' 上的更改evt.newValue()
,不能早点完成吗?IE。作为 localListen 的参数?在
CODE
块中,对象是否被锁定,直到我返回结果?换句话说,是否在这里我确信没有人可以更改对象并且我可以安全地更改我的对象?IMO 在“谓词”定义中而不是在处理程序类中这样做是一个奇怪的地方。
斯文