Size: a a a

2022 January 03

K

Kostya in symfony
Не понял, что имеется ввиду?
источник

MK

Mikhail Kobychev in symfony
Я могу просто ещё раз предложение написать. Оно имеется ввиду ровно то, что я в нём написал
источник

V

Vadim in symfony
Это вендор.
источник

MK

Mikhail Kobychev in symfony
если вендор, то да. rm -rf ./var/cache
источник

k

knopkod4v in symfony
если кто-то order by через case-ы додумывается делать, то найдутся и люди, которые вендор в гит засунут)
источник

K

Kostya in symfony
Это не помогает.
источник

K

Kostya in symfony
Нет, vendor не в git.
источник

MK

Mikhail Kobychev in symfony
ок, неймспейс правильный. Если работаешь в контейнерах - зайди в тот контейнер и проверь его локальный вендор. Если не в контейнере проверь через консоль локально.
Вообще если работаешь с докером то там переодически бывают траблы с кешами файлов
источник

k

knopkod4v in symfony
в конце окажется, что ошибка в ремоуте каком-нибудь, типа докера, а composer require локально)
источник

MK

Mikhail Kobychev in symfony
ещё как вариант выполнить php bin/console debug:container | grep "HttpClient\HttpClient" и понять знает ли о нём симфа.
источник

q

qpr0g in symfony
Всем привет! Проблема с Symfony Messenger. Пробую поработать с CQRS. В качестве транспорта использую RabbitMQ. Command реализовать получилось. А вот Query с возвратом результата не получается сделать. Кто-нибудь сталкивался с подобной проблемой?
источник

MK

Mikhail Kobychev in symfony
У тебя запрос асинхронный? Если да, то возвращай клиенту индетефикатор запроса, а обработчик должен будет сохранить ответ туда, откуда ты сможешь его вычитать. Если у тебя микросервисы, то породить новое сообщение с ответом.
Если всё таки запрос синхронный, то юзай другой транспорт
источник

IB

Iurii Bogdanov in symfony
источник

q

qpr0g in symfony
Михаил, спасибо за ответ. У меня микросервисы. Не совсем понял, что нужно делать. Можно я пример приведу.

Предположим, что у меня 2 микросервиса: A (апишка) и B (учёт количества звёд). У микросервиса B своя БД к которой микросервис A не имеет доступа.
Если мы находим новую звезду - отправляем Command (ответ нам не нужен), новая здвезда учитывается (сохраняется в БД) и все супер. А что делать, когда мы хотим получить кол-во звёзд в БД? Предположительно, отправляем Query и получаем число. Как быть в такой ситуации?

Мне в ответ ничего не приходит. $handledStamps = $envelope->all(HandledStamp::class); (тут пустой массив).
источник

q

qpr0g in symfony
Спасибо за ответ. Тут прикол в том, что Query диспатчится и сразу выполняется. То есть оно не уходит за рамки приложения. А как быть, если микросервисы? Из микросервиса A послать Query в микросервис B и получить ответ обратно в микросервис A?
источник

MK

Mikhail Kobychev in symfony
Можно сделать так, чтоб микросервис B порождал сообщение "у порно актрисы теперь 8 звёзд" (после того, как в него отправили команду на добавление звёзд). Сервисы которые заинтересованы в этом топике, подписываются на него.
Есть сервис C "Агрегатор порноактрис" который получает сообщение из нужных для него топиков и формирует страницу порноактриссы где есть метаинформация, фотография, последние видео и оценка в звёздах. К сервису С можно делать только query запросы а вот к сервису B только комманды. Это вроде как и есть cqrs в масштабах микросервисов.
источник

MK

Mikhail Kobychev in symfony
Просто если честно я не вижу смысла использовать rabbitmq как транспорт для query запросов если просто можно сделать web api для query и долбиться в этот сервис напрямую. Или делать агрегирующие сервисы, как я указал выше
источник

IB

Iurii Bogdanov in symfony
Я бы реализовал через кастомный транспорт

https://symfony.com/doc/current/messenger/custom-transport.html

См. send() метод
источник

q

qpr0g in symfony
Михаил и Юрий, спасибо за идеи - буду пробовать.
источник

MK

Mikhail Kobychev in symfony
Почитай, возможно проблема действительно архитектурная.
https://microservices.io/patterns/data/cqrs.html
источник