Prev Next

Integration / RabbitMQ Interview Questions

Explain the execution flow of a publisher confirm?

Publisher confirms let a producer track, asynchronously, whether each message it published was actually accepted by the broker.

sequenceDiagram participant P as Producer participant B as Broker P->>B: channel.confirm_select() P->>B: basic.publish (delivery tag 1) P->>B: basic.publish (delivery tag 2) B-->>B: route + persist message 1 B-->>P: basic.ack (delivery tag 1) B-->>B: message 2 could not be routed B-->>P: basic.nack (delivery tag 2) P->>P: mark tag 1 confirmed, retry/handle tag 2

The producer typically keeps a map of outstanding delivery tags to messages; on basic.ack it removes the tag as confirmed, and on basic.nack it can log, alert, or retry the failed message. RabbitMQ can also send a single ack covering a range of tags via the multiple flag, which is why batching acks improves throughput.

What must the producer call first to enable publisher confirms on a channel?
What does a basic.nack from the broker to the producer indicate?

More Related questions...

What is RabbitMQ? What is a message broker? What is AMQP? What is a queue in RabbitMQ? What is an exchange in RabbitMQ? What are the types of exchanges in RabbitMQ? What is a binding in RabbitMQ? What is a routing key? What is a producer in RabbitMQ? What is a consumer in RabbitMQ? What is the purpose of the RabbitMQ management plugin? What are the types of acknowledgments in RabbitMQ? Define virtual host in RabbitMQ? Describe how RabbitMQ ensures message durability? List the client libraries available for RabbitMQ? How does RabbitMQ differ from Kafka? Why do we use dead-letter exchanges in RabbitMQ? How does RabbitMQ handle message acknowledgment? What is the difference between direct and topic exchange? What happens when a queue has no consumers? How is message persistence achieved in RabbitMQ? Why should you use prefetch count in RabbitMQ? When should you use a fanout exchange? What is the difference between durable and transient queues? How do you implement RPC pattern with RabbitMQ? Why does RabbitMQ use a heartbeat mechanism? What is the difference between RabbitMQ and ActiveMQ? How can you optimize RabbitMQ throughput? When would you choose quorum queues over classic queues? What is the difference between publisher confirms and transactions? Explain the lifecycle of a message in RabbitMQ? Explain the internal working of RabbitMQ clustering? Why doesn't RabbitMQ guarantee message ordering in all cases? How does RabbitMQ handle high availability? Explain the execution flow of a publisher confirm? How do you troubleshoot memory alarms in RabbitMQ? What is the difference between mirrored queues and quorum queues? How does RabbitMQ implement the Raft consensus algorithm in quorum queues? Why is TTL important for queues and messages in RabbitMQ? How do you scale RabbitMQ horizontally? Explain the internal working of the RabbitMQ shovel plugin? What is the difference between federation and shovel in RabbitMQ? How does RabbitMQ handle network partitions in a cluster? Explain the lifecycle of a consumer connection and channel? How do you troubleshoot unacknowledged message buildup in RabbitMQ?
Show more question and Answers...


Comments & Discussions