Basic Publishing Topologies¶
This page shows the most common publisher topologies using PublisherBoundDescriptor.
The examples focus on descriptor configuration.
Publish To A Single Exchange¶
graph LR
Publisher --> Exchange["orders"]
var descriptor = new PublisherBoundDescriptor
{
Exchanges =
{
new ExchangeBoundDescriptor
{
Name = "orders",
Type = ExchangeTypes.Direct,
Durable = true
}
}
};
Publish To A Single Queue¶
graph LR
Publisher --> Exchange["orders"]
Exchange --> Queue["orders.created"]
var descriptor = new PublisherBoundDescriptor
{
Exchanges =
{
new ExchangeBoundDescriptor
{
Name = "orders",
Type = ExchangeTypes.Direct,
Durable = true,
Queues =
{
new QueueBoundDescriptor
{
Name = "orders.created",
Durable = true,
AutoDelete = false
}
}
}
}
};
Publish To Multiple Queues¶
graph LR
Publisher --> Exchange["orders"]
Exchange --> ERP["erp.orders"]
Exchange --> CRM["crm.orders"]
Exchange --> Audit["audit.orders"]
var descriptor = new PublisherBoundDescriptor
{
Exchanges =
{
new ExchangeBoundDescriptor
{
Name = "orders",
Type = ExchangeTypes.Direct,
Durable = true,
Queues =
{
new QueueBoundDescriptor
{
Name = "erp.orders",
Durable = true,
AutoDelete = false
},
new QueueBoundDescriptor
{
Name = "crm.orders",
Durable = true,
AutoDelete = false
},
new QueueBoundDescriptor
{
Name = "audit.orders",
Durable = true,
AutoDelete = false
}
}
}
}
};
Send Message¶
await publisher.SendAsync(new OrderCreated
{
OrderId = Guid.NewGuid(),
CreatedAtUtc = DateTime.UtcNow
});
When To Use¶
Use these topologies when:
- the publisher owns a simple exchange topology;
- one message must be routed to one or more queues;
- the topology can be described directly from configuration;
- routing logic should not be hardcoded in application code.