Как установить строительные поля или загрузку конфигурации в akka actor? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть сценарий, в котором мне нужно получить данные от вызова API Soap Service для каждой компании.Для каждой отрасли у меня есть тысячи компаний.

Чтобы вызвать API, мне нужно установить / передать несколько параметров, кроме companyid.Эти параметры, такие как имя пользователя, пароль, URL, порт и т. Д. ... больше файлов конфигурации или свойств.

Они не изменятся для каждого вызова, то есть для каждого актера.

Я пытаюсь реализоватьТо же самое с использованием системы Akka Actor для поиска компании, т.е. вызова API Soap Service.

Я новичок в Akka, любая помощь, как это сделать?

Спасибо и С уважением.

Попытка:

CompanyActor - который ожидает, что CompanyId так создал CompanyInput, как показано ниже

CompanyInput{
 String companyId,
 DataAPIConnection conn;
}

Я готовлю CompanyInput, где я получаю объект соединения "conn", передавая вседопустимые userName и pwd, URL для вызова API службы мыла.Я также устанавливаю 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 () возвращает void, поэтому я возвращаю будущее?

1 Ответ

1 голос
/ 25 июня 2019

В Akka сообщения идут в одном направлении, и функция приема не возвращает значение. Вместо этого вы можете отправить ответное сообщение обратно исходному отправителю:

https://doc.akka.io/docs/akka/current/actors.html#reply-to-messages

Вы можете использовать шаблон запроса, чтобы упростить отправку сообщения, ожидающего ответа. Вызов ask возвращает CompletionStage в Java (или Future в Scala), который завершается, когда принимающий субъект отвечает своему отправителю:

https://doc.akka.io/docs/akka/current/actors.html#ask-send-and-receive-future

...