1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/beykery-bakka

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

#bakka Один из способов использования Akka, подходящий для построения распределённых систем

Координаты

 <dependency>
     <groupId>org.beykery</groupId>
     <artifactId>bakka</artifactId>
     <version>1.0.6</version>
 </dependency>

Проблема

При использовании Akka для создания распределённых приложений требуется выполнение различных конфигураций, создание акторов, определение маршрутов и отправка сообщений в указанные акторы. В процессе работы также необходимо слушать различные события кластера и жизненный цикл акторов. Это может быть сложно.

Решение

Концепция bakka заключается в том, чтобы помочь разработчикам максимально упростить эти задачи с самого начала. Вам просто нужно писать логику бизнес-процессов внутри специального актора. Когда вам нужно вызвать другой сервис, вы можете использовать найденные акторы и отправлять сообщения согласно своему маршрутизатору.

Использование

Для начала необходимо поместить bakka.conf в каталог resource, а свойство bakka.system.name изменить на желаемое имя. bakka.system.classpath должно быть установлено на имя вашего пакета акторов в приложении. При запуске системы все акторы в этом пути будут рекурсивно сканироваться и запущены. Также следует установить свойства roles на нужные вам акторы. Например, если есть актор с названием Backend, его можно добавить в список roles. ```java @Bakka(service = "Backend") public class Backend extends BaseActor {

@BakkaRequest public HI hi(HI hi) { System.out.println(hi + ". . . . . . "); return hi; } }


Этот актор (необходимо наследовать от `BaseActor`) имеет свою службу `Backend`, указанную в аннотации `@Bakka`. Если эта служба
присутствует в списке ролей `bakka.conf`, то этот актор будет автоматически запущен при старте системы. Когда он получает сообщение типа `HI`,
метод `hi` (с аннотацией `@BakkaRequest`) будет вызван. Его возвращаемое значение (`HI`) будет автоматически отправлено обратно текущему отправителю (если он существует).

`Bakka` использует `protostuff` для сериализации сообщений. Все сообщения должны реализовывать интерфейс `org.beykery.bakka.Serializable`,
иначе они не будут сериализованы протостаффом.

При обработке сообщений (например, в методе `hi`), если вам нужно передать сообщение другому актору, вы можете получить доступ к его услугам через свойство `services` и отправить сообщение следующим образом:

```java
@Bakka(service = "Frontend", slaves = {"Backend"})
public class Frontend extends BaseActor {
``````java
   @BakkaRequest
   public void hi(HI hi) {
     System.out.println(hi + ". . . . . . ");
     this.services.get("Backend").get(0).tell(hi, self());
   }
}

Класс Frontend имеет аннотацию @Bakka, которая объявляет зависимые от него акторы (slaves). Поэтому он может находить эти службы (Backend) среди своих сервисов. Эти службы могут быть локальными или предоставляются акторами с других узлов системы. Остается выбрать один или несколько акторов в соответствии с логическими требованиями и отправить им сообщение. Когда некоторые узлы системы выходят из строя, Bakka обрабатывает это, удаляя неработающие акторы из списка услуг; когда некоторые узлы становятся доступными, Bakka регистрирует и слушает связанные акторы (сервисы); гарантируется правильное изменение услуг.## Заключение наслаждайтесь этим.

## Заключение
наслаждайтесь этим.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Один из способов использования Akka, подходящий для построения распределённых систем. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/beykery-bakka.git
git@api.gitlife.ru:oschina-mirror/beykery-bakka.git
oschina-mirror
beykery-bakka
beykery-bakka
master