Size: a a a

2021 January 14

КГ

Константин Грачев... in symfony
Опять таки последнюю версию смотрю, на 4.2.4 хз
источник

D

Dmitry in symfony
Константин Грачев
@GDXbsv залез в код, он записывает какие хендлеры уже были успешно выполнены и при ретрае будет вызов только 1 неудачного из 10
а куда пишет ? дайте ссылочку плиз
источник

КГ

Константин Грачев... in symfony
Dmitry
а куда пишет ? дайте ссылочку плиз
Stamp в Envelop добавляет
источник

SB

Sergei Baikin in symfony
Сергей Вершинин
ну например как у вас было...
Создался ивент - dispatch(СозданЗакан)
он ушел в excahnge -> оттуда в две очереди
- отправить смс
- отпавмть email

на каждую очередь независимый воркер.

смс отправили - ack
email нет. сделали retry - все равно нет. отправили в failed queue

далее нашли, что пароль сменили на почте, все исправили и делаем redelivery failed очереди. всем email пришел, ничего не потеряли
У messanger один и только один воркер да и дожне быть один чтобы под каждое из 1000 обработчиков не писать свой воркер и не делать свою очередь

Messnger не умеет управлять exchange
Вы не можете ему сказать за счет excahnge какие обработчики выполнять для сообщения а какие нет.

Если вы столько штуки руками хотите писать то зачем вам messenger вообще тащить и с ним боротся тогда?
источник

D

Dmitry in symfony
Константин Грачев
Stamp в Envelop добавляет
а потом куда его ? назад в очередь ?
источник

КГ

Константин Грачев... in symfony
Dmitry
а потом куда его ? назад в очередь ?
да
источник

SB

Sergei Baikin in symfony
Константин Грачев
@GDXbsv залез в код, он записывает какие хендлеры уже были успешно выполнены и при ретрае будет вызов только 1 неудачного из 10
да пишет
но если не сможет сохранить в очередь или прсото пхп умрет или конект пропадет это не сильно поможет
все пропадет в суе
источник

КГ

Константин Грачев... in symfony
Sergei Baikin
да пишет
но если не сможет сохранить в очередь или прсото пхп умрет или конект пропадет это не сильно поможет
все пропадет в суе
От всего на свете соломку не подложишь)
источник

SB

Sergei Baikin in symfony
Константин Грачев
От всего на свете соломку не подложишь)
положишь
прсото можно взаранее создавать под каждый обработчик свое сообщение
и тогда очереди будут сами руковдить ретраями и независимостью
источник

КГ

Константин Грачев... in symfony
Sergei Baikin
положишь
прсото можно взаранее создавать под каждый обработчик свое сообщение
и тогда очереди будут сами руковдить ретраями и независимостью
Ты выше писал про пожирателя бюджетов. У вас так часто хендлеры в ошибки падают, что распараллеливание месседжей per handler даст меньше сообщений в sqs чем ретрай с созданием нового?
источник

SB

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

КГ

Константин Грачев... in symfony
Или ты имел ввиду кейс когда оно в рекурсии 100500 сообщений создаёт за наносек?
источник

SB

Sergei Baikin in symfony
Константин Грачев
Ты выше писал про пожирателя бюджетов. У вас так часто хендлеры в ошибки падают, что распараллеливание месседжей per handler даст меньше сообщений в sqs чем ретрай с созданием нового?
да часто у нас Dynamo c автомаштабированием
ему надо минут 5 бывает чтобы количество одновременных подключений поднять
если ресурсов не хватет сообщения в реплей уходят пока пропусканая способность не повысится
источник

SB

Sergei Baikin in symfony
при этом в очереди 5-10 миллионов сообщений может прилететь
если пересоздавать их каждый раз то это будет то еще приключение и перерасход денежный
источник

СВ

Сергей Вершинин... in symfony
Sergei Baikin
У messanger один и только один воркер да и дожне быть один чтобы под каждое из 1000 обработчиков не писать свой воркер и не делать свою очередь

Messnger не умеет управлять exchange
Вы не можете ему сказать за счет excahnge какие обработчики выполнять для сообщения а какие нет.

Если вы столько штуки руками хотите писать то зачем вам messenger вообще тащить и с ним боротся тогда?
да я то не борюсь) я привел пример использования, где независимые обработчики сообщения с возможностью переиграть их
источник

SB

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

СВ

Сергей Вершинин... in symfony
ну как эт не может
источник

SB

Sergei Baikin in symfony
Sergei Baikin
пример норм
но messenger так не может
ну и создание больше одного консюмера такая себе идея говна. Тяжко менеджить следить и подерживать
источник

SB

Sergei Baikin in symfony
Сергей Вершинин
ну как эт не может
Что мне прописать в конфиге meseenger чтобы он мне exchange сконфигурировал?
Чтобы он для одной очереди выполнял толко слушатель А а для другой только слушатель B для одного и того же собщения а не А+В для обоих очередей?
источник

СВ

Сергей Вершинин... in symfony
framework:
   messenger:
           order:
               dsn: '%env(RABBITMQ_DSN)%'
               options:
                   exchange:
                       name: order
                   queues:
                       order_sms: ~
                       order_email: ~
           order_sms:
               dsn: '%env(RABBITMQ_DSN)%'
               options:
                   auto_setup: false
                   queues:
                       order_sms: ~
           order_email:
               dsn: '%env(RABBITMQ_DSN)%'
               options:
                   auto_setup: false
                   queues:
                       order_email: ~

       routing:
           App\Event\OrderCreated: order
источник