Transactions ou confirmations de publication
Comparez les transactions AMQP au mécanisme plus léger des confirmations de publication et découvrez quand chacun garantit qu’un message a été accepté en toute sécurité par le courtier.
Transactions ou confirmations de publication est une leçon RabbitMQ Messaging & Async Systems gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage RabbitMQ Messaging & Async Systems, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours RabbitMQ Messaging & Async Systems comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Why Reliability Needs More Than Persistence
Persistent messages survive a broker restart, but persistence alone does not tell the publisher whether the broker actually received and stored the message.
For end-to-end reliability you need confirmation.
AMQP Transactions
AMQP supports transactions on a channel: you begin a transaction, publish messages, then commit. The broker confirms the whole batch atomically.
Using a Transaction
Enable transaction mode with tx_select, publish, then tx_commit.
channel.tx_select()
channel.basic_publish(exchange='', routing_key='jobs', body='task')
channel.tx_commit()The Cost of Transactions
Transactions are synchronous and slow. Each commit blocks until the broker responds, often cutting throughput by 200x or more.
They serialize publishing, which kills pipelining.
Publisher Confirms Recap
Publisher confirms are an asynchronous alternative. The broker sends an ack per message (or per batch) once it is safely handled, without blocking the publisher.
Enabling Confirm Mode
Put the channel into confirm mode once; you cannot mix it with transaction mode on the same channel.
channel.confirm_delivery()
channel.basic_publish(exchange='', routing_key='jobs', body='task')Asynchronous Acks
With confirms you can keep publishing while acks arrive in the background, then match acks to delivery tags. This preserves high throughput.
Handling Nacks
If the broker cannot handle a message it sends a nack. Your code must resend or log it. Nacks are rare but signal internal broker errors.
Choosing Between Them
- Transactions: true atomic multi-message commit, but very slow
- Confirms: near-equivalent safety with far higher throughput
The RabbitMQ team recommends confirms for almost all cases.
Combine With Persistence
For the strongest guarantee, mark messages persistent and use confirms; the broker only acks a persistent message after it is written to disk.
props = pika.BasicProperties(delivery_mode=2)
channel.basic_publish(exchange='', routing_key='jobs', body='task', properties=props)Mutually Exclusive Modes
A single channel cannot be in both transaction and confirm mode. Pick one per channel; attempting both raises a channel error.
Quick Check
Test your reliability knowledge.
Recap
Both transactions and publisher confirms tell a publisher the broker accepted a message.
Transactions are atomic but slow; confirms are asynchronous and fast. Combine confirms with persistent messages for the best balance of reliability and performance.
Questions Fréquemment Posées
La leçon « Transactions ou confirmations de publication » est-elle gratuite ?
Oui — le texte complet de « Transactions ou confirmations de publication » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours RabbitMQ Messaging & Async Systems, passe à CoddyKit PRO. Le cours RabbitMQ Messaging & Async Systems comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Transactions ou confirmations de publication » ?
Comparez les transactions AMQP au mécanisme plus léger des confirmations de publication et découvrez quand chacun garantit qu’un message a été accepté en toute sécurité par le courtier. Tu pratiques RabbitMQ Messaging & Async Systems avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer RabbitMQ Messaging & Async Systems ?
Aucune expérience préalable n'est requise. RabbitMQ Messaging & Async Systems sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Transactions ou confirmations de publication » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon RabbitMQ Messaging & Async Systems ?
Oui. Chaque leçon RabbitMQ Messaging & Async Systems inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Messages et files d’attente persistants
- Confirmations de publication pour la fiabilité
- Accusés de réception et remise en file des consommateurs
- Transactions ou confirmations de publication