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