Аза
Всем привет! Был ли у кого опыт, и кто может подсказать, как дружить между собой messanger разных микросервисов? Микросервисы на симфе. Переопределил сериализатор мессенджера, дабы и другие сервисы его понимали, но проблема не с этим. Проблема в обработке джобов, а именно бросить джобу в одном микросервисе, а обработать в другом. Сейчас симфа не хочет видеть message без его хендлера, что не совсем подходит, так как обработчик(с таким же месседжем) должен быть в другом микросервисе, а месседж бросаться в первом
Аза
По итогу то это и пытаюсь сделать
Сергей
Какие?
подходящие для твоего брокера.) Для ребита с симфой вроде oldsound раньше в основном использовали
Аза
Брокер — реббит. Спасибо, гляну
Dmitriy
ну в гугле много инфы "symfony messenger consume external message"
Сергей
и мессенджер подойдет)
Сергей
ну в гугле много инфы "symfony messenger consume external message"
значит я пропустил когда это сделали)
Сергей
видимо в 5 симфе
Сергей
это было все время. не было никаких ограничений
Аза
это было все время. не было никаких ограничений
Так получается два обработчика нужно держать в обеих микросервисах или как?
Сергей
вот кстати одна из попыток это сделать универсально) https://github.com/Happyr/message-serializer
Аза
вот кстати одна из попыток это сделать универсально) https://github.com/Happyr/message-serializer
Да с сериализацией то нет проблем.. Проблема в дублировании обработчиков в каждом микросервисе
Сергей
а по подробней?
Юра
Симфони сохраняет класс сообщения и информацию с энвелопов всяких
Юра
Ты где это хочешь прочитать? Если в другой симфони то по идее главное так же настроить мессенджер и принимать себе
Юра
Если в другом приложении то тут проблемы я так понимаю
Аза
Если в другом приложении то тут проблемы я так понимаю
Нет, проблема была, как и описывал выше в том, что в каждом микросервисе должен быть Message и MessageHandler. Это не совсем правильно, если я хочу в одном генерировать месседж, а во втором микросервисе его обработать. Вроде решается на уровне конфига
Юра
А если у тебя нет класса этого месаджа то как это выглядит в итоге?
Аза
Иначе симфа вообще отказывается видеть все message, которые без хендлеров
Юра
приходит stdClass или что?
Аза
А если у тебя нет класса этого месаджа то как это выглядит в итоге?
Класс месседжа есть, но нет его хендлера в первом микросервисе
Аза
приходит stdClass или что?
Нет я поменял сериализатор там есть type, который мне нужен и еще пару полей
Alexey Mishurovskiy
Всем привет!
Alexey Mishurovskiy
Как пнуть долбаный прокси-класс доктрины, чтобы он вынул данные из БД ? $em->refresh не помогает.
Юра
Дернуть геттер? )
Сергей
кроме геттера id
Юра
А что за кейс такой, ниразу не встречал необходимости
Alexey Mishurovskiy
я дергаю связь $processes = $paymentTransaction->getProcesses(); в БД 2 записи результат геттера = 0
Alexey Mishurovskiy
ожидаемый результат 2, а фактический 0
Юра
Отключи прокси в тестах
Юра
По идее auto_generate_proxy_classes
Юра
В конфиге
Юра
Хотя я не уверен что оно отключает механизм прокси
Юра
Возможно просто не генерит их автоматически
Сергей
тут кажется ошибка в чем то другом, а не в прокси
Юра
getProcesses()->count()
Юра
Будет ноль?
Евгений
Всем привет! Подскажите пожалуйста, как добавть группу и пользователя в докер контейнер при установке композера? После установке symfony в папке с приложением ничего не могу изменить - права ограничены. Спасибо.
Alexey Mishurovskiy
Сергей
ожидаемый результат 2, а фактический 0
а если сделать em->clear(): потом по id найти paymentTransaction ?
Юра
Ну перепиши тест
Alexey Mishurovskiy
Ну перепиши тест
но, при этом другая фигня. ща покажу
Alexey Mishurovskiy
хотя надо дополнительно проверить
Юра
Ну сделай каст к PersistentCollection и посмотри методы
Alexey Mishurovskiy
а если сделать em->clear(): потом по id найти paymentTransaction ?
был крайний вариант. ща проверю, может зря панику поднял
Юра
/** * Initializes the collection by loading its contents from the database * if the collection is not yet initialized. */ public function initialize(): void {
Alexey Mishurovskiy
все, нашел ошибку. 🤦🏼‍♂️ все нормально работает
Alexey Mishurovskiy
Спасибо ))) иногда выговорится помогает найти
Юра
https://imgflip.com/i/6z7r50
Alexey Mishurovskiy
😂 да
Евгений
в Dockerfile нужно прописать. Можно здесь посмотреть https://github.com/underground20/docker-environment/blob/master/docker/php-cli/Dockerfile
Николай спасибо. Есть ли описание того, что там происходит? Я еще холодный в этом - учусь. Спасибо.
Евгений
Попытался установить symfony в папку app в корне проекта, выдает ошибку - mkdir(): Permission denied
Евгений
я права вообще не трогаю - я же и искал, как делается без изменения прав вручную
Nikolay
я права вообще не трогаю - я же и искал, как делается без изменения прав вручную
Если через composer в отдельном контейнере ставится, то как я выше скидывал надо пробросить пользователя
Евгений
я все окружение скачал
Евгений
но я не пойму в какую папку устанавливать симфони. все службы работают с корнем. при установке симфони указывается название проекта, которое является названием папки.
Евгений
чтобы работать с симфони, нужно либо изменять в службах путь, но только после установки симфони. потому что иначе задаются права
Евгений
но по моему это квест какой-то. я пытаюсь изучать докер для удобной работы.
Евгений
задаются не права, а ограничения
Nikolay
У меня на том конфиге, что выше, поднят проект на симфони. Сначала запустите контейнеры, потом установите скелетон или еще что (composer create-project ....) Потом просто проверить и поправить настройки, где это нужно
Евгений
Спасибо Николай, я понял.
Евгений
а нет другого решения?
Nikolay
А какое вы хотите еще?
Евгений
Окружения
Nikolay
Это минимальное окружение, которое нужно для работы. Чем оно не подходит?
Евгений
Спасибо, я переживаю, что в какой-то момент забуду этот ньюанс и буду голову ломать почему не работает))
Евгений
Простите, на самом деле спасибо огромное.
Nikolay
Спасибо, я переживаю, что в какой-то момент забуду этот ньюанс и буду голову ломать почему не работает))
Напишите по шагам и сохраните как памятку, если вам надо будет посмотреть потом
Евгений
👍
Евгений
Николай! Вы не знаете, как зайти в папку с симфони внутри контейнера?
Nikolay
Николай! Вы не знаете, как зайти в папку с симфони внутри контейнера?
docker-compose exec php-cli bash, вместо php-cli название вашего сервиса
Евгений
а cd ... куда писать?