Size: a a a

2021 May 30

AC

Andru Cherny in symfony
У меня парк микросервисов(штук 40-50) везде консольные демоны с мускулем и ребитом. И приходится вот так изгаляться
источник

SP

Sergey Protko in symfony
просто после каждой итерации/сообщения/запроса приводить коннекшены в порядок.
источник

SP

Sergey Protko in symfony
помимо коннекшенов разработчики могут еще неправильно с транзакциями работать (например забыть сделать ролбэк при исключении)
источник

SP

Sergey Protko in symfony
вот это все у меня хэндлит один обработчик на строк 50 кода
источник

SP

Sergey Protko in symfony
и менеджеры ресетит, и ролбэчит кривые транзакции, и пинги коннекшенам делаются (вот это перед итерацией)
источник

SP

Sergey Protko in symfony
и не пришлось даже переопределять ничего
источник

SP

Sergey Protko in symfony
в "былые времена" да, приходилось изгаляться что бы ресетать энтити менеджеры и вот это все.
источник

AC

Andru Cherny in symfony
Мы завязаны на enqueue сейчас. И даже их плагин с реконектом доктрины не всегда спасает
источник

SP

Sergey Protko in symfony
заюзайте реализацию из symfony/messanger к примеру. enqueue дает хуки все необходимые, не рокет сайнс
источник

SP

Sergey Protko in symfony
там условно код нужен в стиле...

public function ensureConnectionsAlive()
   {
       foreach ($this->registry->getConnections() as $name => $connection) {
           if (!$connection->isConnected()) {
               continue;
           }

           try {
               $connection->query($connection->getDatabasePlatform()->getDummySelectSQL());
           } catch (\Exception $e) {
               $connection->close();
               $connection->connect();
           }
       }

       foreach ($this->registry->getManagers() as $name => $manager) {
           if (!$manager instanceof EntityManagerInterface) {
               continue;
           }
           if (!$manager->isOpen()) {
               $this->registry->resetManager($name);
           }
       }
   }
источник

SP

Sergey Protko in symfony
p.s. мы тоже все еще юзаем enqueue - переводим на свой велосипед ибо бесполезная шляпа этот enqueue
источник

AC

Andru Cherny in symfony
Спасибо, сохранил. На неделе передам команде разрабов
источник

SP

Sergey Protko in symfony
скажи им пусть глянут symfony messanger. как минимум неплохая замена enqueue (чуть более полезная) и куда более активно поддерживается.
источник

SP

Sergey Protko in symfony
если не для "заменить" то хотя бы для вдохновения че оно там еще с симфони мутит для того что бы чистить стэйт
источник

AC

Andru Cherny in symfony
Да, я видел его, согласен что поддержка у них лучше. Просто нужно ещё сделать обратную совместимость с теми очередями которые уже есть.
источник

SP

Sergey Protko in symfony
у меня просто enqueue консюмер форвардит сообщения в новую инфраструктуру для совместимости. адаптер такой.
источник

SP

Sergey Protko in symfony
ну и да для микросервисов мы сейчас вообще DAPR смотрим просто потому что задолбали велосипеды и задолбал пых
источник

👤U

👤 User in symfony
Офф дока вон тоже не рекомендует держать вечные воркеры.
источник

SP

Sergey Protko in symfony
источник

SP

Sergey Protko in symfony
угадай язык
источник