我有一个场景,我需要从每个公司的Soap服务API调用中获取数据。对于每个行业,我都有数千家公司。
要调用API,我需要设置/传递除companyid之外的几个参数。这些参数包括用户名、密码、url、端口等。有关配置或属性文件的详细信息..
对于每个调用,即每个Actor,这些都不会改变。
我正在尝试使用Akka Actor系统实现相同的公司检索,即调用Soap服务API。
我刚来Akka,有什么帮助吗?
谢谢并致以问候。
已尝试:
CompanyActor --它需要一个companyId,这样就创建了一个CompanyInput,如下所示
CompanyInput{
String companyId,
DataAPIConnection conn;
}
我正在准备CompanyInput,通过将所有有效的userName和pwd,url传递给Soap Service API调用,我可以获得连接对象"conn“。我还设置了companyId。
然后创建CompanyActor。哪里
@Override
public void onReceive(Object msg) throws Throwable {
if(msg instanceof CompanyInput) {
CompanyInput input = (CompanyInput) msg;
logger.info("onRecive msg companyId : " + input.getCompanyId());
}
}
希望上面的方法能正常工作。如果需要修改,请提供建议。
但我需要返回CompanyInfo对象,即从SoapAPI调用中读取字段并填充CompanyInfo VO。
如何从Actor调用返回对象?onReceive()返回空所以我返回一个未来?
发布于 2019-06-25 08:54:36
在Akka中,消息是单向传递的,接收函数不返回值。相反,您可以将回复消息发送回原始发件人:
https://doc.akka.io/docs/akka/current/actors.html#reply-to-messages
您可以使用"ask模式“来简化发送等待回复的消息的过程。调用ask
在Java语言中返回一个CompletionStage
(或在Scala中返回一个Future
),当接收角色回复其发送者时完成:
https://doc.akka.io/docs/akka/current/actors.html#ask-send-and-receive-future
https://stackoverflow.com/questions/56734199
复制相似问题