Size: a a a

2021 January 14

СВ

Сергей Вершинин... in symfony
но никто не заставляет делать 1 сообщения с 10 обработчиками )
источник

D

Dmitry in symfony
Sergei Baikin
почему у меня не правильная?
я под каждый обработчик создаю свое сообщение
Они обсолютно независимо обработывабся в разных процессах

А вот messege bus symfony связывает все обработчики для сообщения в единое целое. тоесть если я просто его бы использовал то у меня появлялась бы такая проблема хотя мой код не меняется.
тогда почему у вас обработчики зависят друг от друга ?
сделайте 10 процессов консьюмеров чтобы обрабатывать всех отдельно
источник

SB

Sergei Baikin in symfony
Dmitry
если у вас там один обработчик падает по пути и валит всех остальных значит у вас неправильная декомпозиция
вам нужно сделать 2-3-10 очередей который подключаться к одному exchange, если в терминах кролика, и каждый обработчик будет независимо обрабатывать
обработчик один просто куча копий
это часть баса
а дальше бас решает как и какими обработчиками обрабатывать

Консюмер и хэнделеры\обоаботчики это две разные вещи на разных уровнях
источник

D

Dmitry in symfony
тогда как так получается что обработав 9 сообщений и упав на 10-м вам потом нужно обрабатывать те 9 опять ?
источник

D

Dmitry in symfony
ведь каждое сообщение должно быть ACK после обработки
источник

D

Dmitry in symfony
если на одно сообщение только один хендлер выбирается
источник

SB

Sergei Baikin in symfony
Dmitry
тогда почему у вас обработчики зависят друг от друга ?
сделайте 10 процессов консьюмеров чтобы обрабатывать всех отдельно
вот у меня сообщение создалсяЗаказ

есть 2 оброаботчика
1. отправить мыло
2. Отправить смс

И есть один консьюмер котороый просто гребет все что угодно с очереди и одает в бас
бас видит ага вот сообщение и вот у меня на него 2 обработчика заявзано и исполняет
источник

D

Dmitry in symfony
ясно, это ошибка архитектуры, решение я вам дал выше
источник

SB

Sergei Baikin in symfony
Dmitry
если на одно сообщение только один хендлер выбирается
ну вот в симфони месендер не так
там на одно сообщение множество хэндлеров
источник

AD

Andrey Dembitskyi in symfony
Sergei Baikin
вот у меня сообщение создалсяЗаказ

есть 2 оброаботчика
1. отправить мыло
2. Отправить смс

И есть один консьюмер котороый просто гребет все что угодно с очереди и одает в бас
бас видит ага вот сообщение и вот у меня на него 2 обработчика заявзано и исполняет
Почему один* консьюмер?
источник

СВ

Сергей Вершинин... in symfony
Sergei Baikin
ну вот в симфони месендер не так
там на одно сообщение множество хэндлеров
это возможность, а не требования. ну чего вы)
источник

SB

Sergei Baikin in symfony
Dmitry
ясно, это ошибка архитектуры, решение я вам дал выше
так у меня есть решение
эта ошибка в messanger от симфони
что я собственно и хотел сказать
источник

СВ

Сергей Вершинин... in symfony
и ваще, бас не обязательно асинхронный ))
источник

D

Dmitry in symfony
Sergei Baikin
так у меня есть решение
эта ошибка в messanger от симфони
что я собственно и хотел сказать
не, это ваш код, мессенджер тут не причем
источник

D

Dmitry in symfony
мессенджер позволяет сделать правильно, что он него и требуется.
а если его используют неправильно это не проблема инструмента
источник

SB

Sergei Baikin in symfony
Andrey Dembitskyi
Почему один* консьюмер?
источник

SB

Sergei Baikin in symfony
Dmitry
мессенджер позволяет сделать правильно, что он него и требуется.
а если его используют неправильно это не проблема инструмента
окей как мне сделать в нем чтобы слушатели сообщений обрабытывались независимо без написания своего кода поверх?
источник

SB

Sergei Baikin in symfony
Dmitry
не, это ваш код, мессенджер тут не причем
вы использовали symfony messenger?
источник

СВ

Сергей Вершинин... in symfony
1 exchange
2 queue
2 worker
источник

SB

Sergei Baikin in symfony
Сергей Вершинин
1 exchange
2 queue
2 worker
нельзя привязыватся к инфраструктуре
оно должно работать везде например с SQS
там нет exchange
источник