Мое понимание Акки заключается в том, что она обеспечивает модель, при которой несколько изолированных потоков могут взаимодействовать друг с другом очень быстро. В нем используется "модель актера", где каждый поток является "актером" с определенным заданием. Вы можете организовать, какие сообщения передаются каким субъектам при каких условиях.
Я использовал Camel раньше, и для меня это похоже на то, что он потерял свой блеск/полезность теперь, когда Akka настолько зрелая и хорошо документирована. Насколько я понимаю, Camel занимается корпоративной интеграцией, то есть интегрирует несколько несопоставимых систем вместе, как правило, в какой-то форме служебной шины.
Но подумайте: если я в настоящее время использую Camel для:
- Опросите FTP-сервер для файла и после его обнаружения...
- Преобразование содержимого этого файла в POJO, затем...
- Отправьте сообщение, если POJO имеет определенное состояние, или
- Сохранять POJO в базе данных во всех других случаях.
Я могу сделать то же самое с Аккой; У меня может быть 1 Актер для каждого из этих шагов (опрос FTP, преобразование файла → POJO, электронная почта или сохранение), связать их вместе и позволить Akka обрабатывать всю асинхронность / concurrency.
Итак, несмотря на то, что Akka - это структура concurrency (с участием актеров), и хотя Camel об интеграции, я должен спросить: не может Akka решить все, что делает Camel? В словах: Какие существуют варианты использования Camel над Akka?