Я использую bugsnag в проекте symfony 5, чтобы отслеживать исключения. Я также использую symfony мессенджер с кроликом для тяжелой обработки.
В целом все работает нормально, за исключением того факта, что в некоторых случаях внутри промежуточного программного обеспечения мессенджера (RejectRedeliveredMessageMiddleware) в некоторых конкретных случаях выдается исключение, чтобы инициировать запрос сообщения, избегая при этом возможного бесконечного l oop (RejectRedeliveredMessageException).
Исключение должно быть, и поведение правильное. Например, если процесс неожиданно остановился (жесткая перезагрузка или уничтожение), требуется сообщение. Logi c работает хорошо, автовосстановление работает отлично.
Единственная проблема в том, что bugsnag регистрирует себя как подписчик на все события ядра, обработанные или нет (код ниже)
$listeners = [
KernelEvents::REQUEST => ['onKernelRequest', 256],
KernelEvents::EXCEPTION => ['onKernelException', 128],
];
Обычно исключения перехватываются в нашем приложении до того, как они попадают в общий диспетчер событий, и поэтому они не сообщаются, если не должны. Но поскольку это находится в промежуточном программном обеспечении, и событие возникает, о нем сообщается, даже если оно уже обработано механизмом автозапуска, и из-за этого он генерирует много шума и ложных срабатываний.
нужно отказаться от подписки на конкретное событие, но, поскольку я не могу коснуться стороннего кода (bugsnag и messenger), я не могу найти способ сделать это.
Есть ли способ программно удалить событие от абонента?