Sobes.tech
Junior — Middle

Šta uraditi ako poruke nisu dostavljene u RabbitMQ nakon završetka transakcije?

sobes.tech АИ

Одговор од АИ

Ако poruke nisu dostavljene u RabbitMQ nakon završetka transakcije, potrebno je:

  1. Proveriti da li je transakcija zaista potvrđena (commit). Ako je transakcija poništena, poruke neće biti poslata.
  2. Koristiti potvrde objavljivanja (publisher confirms) u RabbitMQ da biste bili sigurni da je broker primio i sačuvao poruku.
  3. Implementirati mehanizam za ponovo slanje poruka u slučaju neuspeha dostave.
  4. Beležiti greške i događaje dostave za kasniju analizu.

Primer korišćenja publisher confirms u PHP-u sa bibliotekom php-amqplib:

$channel->confirm_select();
$channel->basic_publish($msg, '', 'queue_name');

if (!$channel->wait_for_pending_acks_returns()) {
    // Obrada greške dostave
    // Možete ponovo poslati ili sačuvati poruku za ponovni pokušaj
}

Na ovaj način, garantuje se pouzdana dostava poruka čak i pri kvarovima.