Sobes.tech
Junior — Middle

Ko darīt, ja ziņojumi nav piegādāti RabbitMQ pēc darījuma pabeigšanas?

sobes.tech AI

Atbilde no AI

Ja ziņojumi netika piegādāti RabbitMQ pēc transakcijas pabeigšanas, ir jāveic šādi:

  1. Pārbaudīt, vai transakcija patiešām tika apstiprināta (commit). Ja transakcija tika atcelta, ziņojumi netiks nosūtīti.
  2. Izmantot publisher confirms RabbitMQ, lai pārliecinātos, ka starpnieks ir saņēmis un saglabājis ziņojumu.
  3. Ieviest mehānismu ziņojumu atkārtotai sūtīšanai, ja piegāde neizdevās.
  4. Pierakstīt kļūdas un piegādes notikumus turpmākai analīzei.

PHP ar php-amqplib bibliotēku piemērs, kā izmantot publisher confirms:

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

if (!$channel->wait_for_pending_acks_returns()) {
    // Piegādes kļūdas apstrāde
    // Var atkārtoti sūtīt vai saglabāt ziņojumu
}

Tādējādi tiek nodrošināta uzticama ziņojumu piegāde pat avāriju gadījumā.