Для того чтобы определять события, которые будут поддерживаться библиотеками платформы, необходимо в контракте сервиса добавить зависимость от текущего репозитория, используя ppm:
ppm install https://github.com/R-Vision/[email protected]
Далее в файле контракта в котором содержаться типы событий, необходимо импортировать зависимость:
import "event/v1/options.proto";
И у типа события определить принадлежность к сущности с которым связано текущее событие:
message SomeEvent {
option (event.v1.metadata) = {
// Наименование группы событий
// Необходимо для того чтобы складывать разные типы событий в один топик
group: "event_group_name"
// Наименование поля из которого необходимо брать значение для вычисления партиции
// Обычно это поле в котором содержится идентификатор сущности
// partition_key_field : "id"
};
// ... далее уже описываем поля, которые должно содержать событие
}
Данная привязка (события к сущности) позволяет платформе распределять события по определенным топикам в Kafka. Допустим что у какой-нибудь сущности есть события Create, Update и Delete. Благодаря этой привязке все они попадут в один топик тем самым сохранится порядок их происхождения.