Игорь
Юра
У меня правда вопрос зачем общаться между несколькими сеовисамт через мессенджер
Юра
Я думал для этого ивенты есть
Сергей
И транспорт тоже писали, тоже свои мепперы писали.. Всё кастомные короче
Юра
В ивент бас
Юра
Почитай про ивенты в симфони
Dmitriy
видимо речь про общение между микросервисами-отдельными приложениями симфони
Сергей
Тут про общение от какого то сервиса, не обязательно пхп
Юра
Не знаю он написал как общаться между сервисами симфони
Dmitriy
да между сервисами то какие проблемы
Павел
Я думал для этого ивенты есть
Но вопрос тоже интересный, ивенты типо синхронные через event dispatcher ? У нас просто ивенты тоже в мессенджер улетают. Ну типо в теории, ивенты же любые должны видеть все сервисы(микро) общей структуры, а через обыный диспатчер - уже этого не выйдет.
Павел
В ивент бас
но ивент бас - это про мессенджер, Короче я не понял посыл, даже если без микросервисов)
Юра
Ивенты не сериализуются
Юра
Но тема не об этом поэтому забудь
Павел
Ивенты не сериализуются
всмысле. Мессенджер не понимает ивент или что, мы просто для себя бас так обозначаем, разве нет?
Павел
Юра
Я про то что месенджер требует чтобы сообщение сериализовалось
Юра
Обычный симфонийские ивенты не требуют
Юра
Они же не предназначены для хранения
Павел
Юра
Но использовать мессенджер для общения между сервисами внутри приложения наверное можно, только непонятно зачем
Юра
Смотря правда какое общения
Павел
Юра
Это не совсем общение между сервисами в моем понимании
Юра
В твоем случае не знаю, накинуть мидлварь которая будет сериализовать сообщения наверное не так и сложно
Павел
Не ну многие части сифмы работают на ивентах, но чет при завозе мессенджера уже давно не юзал синхронный эвент диспатчер.
Юра
Тем более сериализатор умеет понимать тип класса по опреденному полю в данных, так что можно написать олин раз стандартный и все
Павел
Юра
Значит нужна репа с классами сообщений
Юра
Схема
Павел
Значит нужна репа с классами сообщений
Ну это и был один из вариантов, в моем стартовом сообщении, но выглядит кастыльненько. Тем более ивенты часто доменные и хранить их в какой то левой общей репе, не внутри домена - странно
Юра
Мне так нравится это слово странно
Юра
Что странно то?
Юра
Что ты расшарил схему своих сообщений?
Юра
Ну так если консьюмеру на другом конце нужна эта информация и класс
Юра
То что странного
Юра
Посылай голый джсон тогда
Юра
Что как? Как сериализовать класс?
Юра
Заимплементить интерфейс JsonSerializable
Павел
Так как для успешной десериализации классы и неймсмейсы должны быть 1 в 1
Юра
И пересылай их куда хочешь )
Павел
Юра
Почему один в один
Павел
Сериализатор использует unserialize от пыхи
Юра
Ты же написал что констюмер может не один в один
Павел
Юра
В чем проблема расшарить классы?
Юра
Можешь сделать даже бандл
Юра
Который саой бас со своими мидлварями сделает
Юра
И классами сообщений и сеоиализатором
Юра
Я не знаю это какие-то фетиши доменный ивент и все такое
Юра
Что такое доменный ивент
Павел
У меня т.е. есть Контектст Юзер, а его ивент UserCreated лежит в какой то левой репе
Юра
Ну значит тебе нужно сделать UserCreatedMessage
Юра
Из этого ивента
Юра
Если ты пишешь этот ивент в броадкаст очередь то ты подразумеваешь что это не чисто твой доменный ивент
Юра
В смысле им могут пользоваться другие
Юра
👍
Юра
Я такое видео уже на других проектах
Юра
Где куча команд разных и есть репозиторий со схемой
Юра
И ты комитишь туда типы всех своих сообщений
Юра
Ну возьми к примеру протобуф
Юра
Тебе чтобы отправить и принять на обоих концах нужна схема
Юра
Если все микросервисы на симфе я бы вынес это в бандл
Павел
Ну что то возможно в этом есть, в статье выше тоже про схемы общие было. Но вроде без коммита месседжей. Просто преобразовние какая то шляпа, но в целом решает наверное проблему.
Павел
Надо прожувать инфу) спасибо
Юра
Еще раз сериализатор умеет понимать класс сообщения автоматически
Павел
Юра
https://symfony.com/doc/current/components/serializer.html#serializing-interfaces-and-abstract-classes
Юра
Гспади
Юра
Мидлвари