首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用autobahn java注册远程过程

使用autobahn java注册远程过程
EN

Stack Overflow用户
提问于 2018-12-17 19:17:15
回答 1查看 53关注 0票数 0

在autobahn-java中注册过程的标准方法是:

代码语言:javascript
复制
CompletableFuture<Registration> order_to_produce = session.register(prefix + "order_to_produce", this::order_to_produce);
order_to_produce.thenAccept(registration -> LOGGER.info("Registered procedure: " + registration.procedure));

因为我们有很多函数要注册,所以我想把注册名称和函数放到一个HashMap中,但是我不能用方法引用任何函数。

我想做这样的事情:

代码语言:javascript
复制
    Map<String, Runnable> functions = new HashMap<>();
    functions.put("order_to_produce", this::order_to_produce);


    for (Map.Entry<String, Runnable> function : functions.entrySet())
    {
        CompletableFuture<Registration> registerProcedure = session.register(prefix + function.getKey(), function.getValue());
        registerProcedure.thenAccept(registration -> LOGGER.info("Registered procedure: " + registration.procedure));

        // or using reflection ?
        // 
        CompletableFuture<Registration> registerProcedure = session.register(prefix + function.getKey(), obj.getClass().getMethod(function.getKey()));
        registerProcedure.thenAccept(registration -> LOGGER.info("Registered procedure: " + registration.procedure));
    }

有没有办法做到这一点?

在python中,我可以在后端组件上轻松地做到这一点。

代码语言:javascript
复制
functions = {'backend.add_service': self.add_service,
             'backend.online_services': self.services_online}

for functionToRegister in functions.keys():
    yield self.register(functions[functionToRegister], functionToRegister, options=self.REGISTER_OPTIONS)

问候你,马尔科。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-17 20:03:50

我仍然对原创问题感兴趣,但现在我这样做了:

代码语言:javascript
复制
LinkedList<CompletableFuture<Registration>> functions = new LinkedList<>();
functions.add(session.register(prefix + "order_to_produce", this::order_to_produce));

for (CompletableFuture<Registration> function : functions) {
    function.thenAccept(registration -> LOGGER.info("Registered procedure: " + registration.procedure));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53814125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档