This document provides an overview of RabbitMQ internals, performance, and clustering. It discusses RabbitMQ message consumption alternatives like push and pull APIs. It covers how acknowledgments and prefetching can impact performance. It also describes how RabbitMQ handles flow control on the publisher side and consumer utilization on the consumer side to detect bottlenecks. Additionally, it discusses how RabbitMQ uses alarms and resource thresholds related to memory and disk usage for flow control triggers. Finally, it notes that queues perform best when empty or near-empty to avoid overhead from queue length.