This document discusses building a distributed data ingestion system using RabbitMQ. It begins with an introduction to RabbitMQ and its key features like being multi-protocol, open source, polyglot and written in Erlang. It then discusses the problem of distributing data across multiple servers. RabbitMQ federation is proposed as a solution, allowing replication across servers. Federation uses queues and exchanges to replicate data and can be configured using parameters and policies. The document also discusses scaling the system using sharded queues and federated queues to load balance consumers.