我想使用服务运行服务/计算jub,但运行数据所在的作业。
从客户端我将调用计算或服务代理,但需要服务在缓存数据附近运行。
我注意到你可以使用计算工作中的服务:
compute.run(new IgniteRunnable() {
@ServiceResource(serviceName = "myCounterService");
private MyCounterService counterSvc;
如果我在群集中的每个节点上部署服务,我可以使用带有near cach的计算来执行此操作吗?
compute.affinityRun(CACHE_NAME, key, () -> {
// call my servie here...
也许有一种方法可以直接调用具有亲和力的服务代理,以避免使用comupte?
P.S。原因是服务会产生更多的缓存数据,我希望避免在节点和客户端之间来回传输大数据。
答案 0 :(得分:2)
不幸的是,没有办法根据被调用方法的参数告诉Ignite,使用哪个服务实例。
当您需要在其中存储某些状态时,服务很好。否则计算工作同样有效。此外,计算作业在内部用于调用服务的方法。
因此,如果您没有任何状态,那么只需使用计算作业。否则,您可以尝试将所需资源注入计算作业:https://apacheignite.readme.io/docs/resource-injection
答案 1 :(得分:0)