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:
- Pārbaudīt, vai transakcija patiešām tika apstiprināta (commit). Ja transakcija tika atcelta, ziņojumi netiks nosūtīti.
- Izmantot publisher confirms RabbitMQ, lai pārliecinātos, ka starpnieks ir saņēmis un saglabājis ziņojumu.
- Ieviest mehānismu ziņojumu atkārtotai sūtīšanai, ja piegāde neizdevās.
- 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ā.