将 Akka 与 Spring 和 OSGI 集成(未找到密钥“akka”的配置设置)

Posted

技术标签:

【中文标题】将 Akka 与 Spring 和 OSGI 集成(未找到密钥“akka”的配置设置)【英文标题】:Integration Akka with Spring and OSGI (No configuration setting found for key 'akka') 【发布时间】:2013-05-17 21:39:13 【问题描述】:

我已在我的应用中添加了一个 Akka 演员,可与 SpringOSGI 配合使用。

我尝试像这样使用来自Spring @Component bean 的Actor:

private final ActorSystem system = ActorSystem.create("actor-system");
private ActorRef managerActorRef = system.actorOf(Props.create(ManagerActor.class), "ldapManagerActor");

当我启动应用程序时,它会引发异常 (No configuration setting found for key 'akka'):

Instantiation of bean failed; nested exception is org.springframework.
beans.BeanInstantiationException: Could not instantiate bean class [com.myconpany....ByBean]: Constructor threw exception; nested exception is com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka'

我看过this: doc。似乎我的问题的根源与class loader 有关,我应该将其传递给/用于描述此问题的akka-systemapplication.conf 文件。

但到目前为止,我找不到合适的 stets 来完成所有工作。

有人可以帮忙吗?


我的尝试:

流动的this 文章。

当我输入时:

<bean id="actorSystem" class="akka.actor.ActorSystem" factory-method="create" scope="singleton"></bean>

我有类似的错误:

Could not autowire field: private akka.actor.ActorSystem

com.typesafe.config.ConfigException$Missing: No configuration setting fou
nd for key 'akka'

【问题讨论】:

你有没有 application.conf 文件,如果有,你能把它贴出来,并告诉我该文件是否在类路径的根目录下可用。 已经有了。我刚刚把 akka-actor_.jar/referece.conf 的所有内容都放在那里。它似乎开始工作了。很快就会检查。 【参考方案1】:

如果您只想使用 Akka 演员,则无需传入 application.conf 设置。您可以只使用默认值。确保你的类路径上有配置库。

您没有提及您使用的是什么版本的 Akka,但是如果您使用最新的 Akka 2.2 RC,您可以使用 IndirectActorProducer 来处理弹簧接线。

请参阅这篇文章了解如何做到这一点; http://blog.nemccarthy.me/?p=272

您还应该告诉 Spring 在 ActorSystem 上调用 shutdown 以彻底关闭。还有一个关于如何将 ActorSystem 集成到 Spring 或 web 应用程序中的更新指南here

【讨论】:

以上是关于将 Akka 与 Spring 和 OSGI 集成(未找到密钥“akka”的配置设置)的主要内容,如果未能解决你的问题,请参考以下文章

使用Akka构建集群

有了解OSGI和SharpDevelop框架对比的吗

我为啥不在osgi中使用spring

Flyway 与 JPA + OSGi 的集成

Springboot集成Akka Remote

基于OSGi的Virgo环境搭建——环境篇