وقتی چند مصرفکننده روی یک صف باشند:
هر پیام فقط به یک مصرفکننده تحویل داده میشود.
📊و RabbitMQ پیامها را به صورت Round-Robin بین مصرفکنندگان تقسیم میکند.
💪 مناسب برای توزیع بار پردازش بین چند Worker.
📡 Fanout Exchange – پخش پیام به همه مصرفکنندگان
وقتی میخواهید همه سرویسها پیام را دریافت کنند:
هر مصرفکننده صف اختصاصی خود را دارد.
و Exchange از نوع Fanout پیام را کپی کرده و به همه صفهای متصل ارسال میکند.
📝 کد Producer – Fanout
await channel.ExchangeDeclareAsync(
exchange: "orders",
durable: true,
autoDelete: false,
type: ExchangeType.Fanout);
await channel.BasicPublishAsync(
exchange: "orders",
routingKey: string.Empty,
mandatory: true,
basicProperties: new BasicProperties { Persistent = true },
body: body);
📝 کد Consumer – Fanout
await channel.ExchangeDeclareAsync(
exchange: "orders",
durable: true,
autoDelete: false,
type: ExchangeType.Fanout);
await channel.QueueDeclareAsync(
queue: "orders-consumer-1",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
await channel.QueueBindAsync("orders-consumer-1", "orders", string.Empty);
📈 گامهای بعدی
🎯 استفاده از Direct Exchange یا Topic Exchange برای مسیردهی دقیقتر.
🔄 پیادهسازی Retry Policy و Dead-Letter Queue برای مدیریت خطاها.
📊 پایش و مانیتورینگ پیامها با Management UI.
🏷 هشتگها:
#RabbitMQ #DotNet #EventDrivenArchitecture #MessageBroker