RoutingBridgeDescriptor¶
RoutingBridgeDescriptor configures a routing bridge.
A routing bridge consumes messages from a source topology and republishes them to a target topology.
Definition¶
public class RoutingBridgeDescriptor
{
public SubscriberBoundDescriptor Source { get; set; }
public PublisherBoundDescriptor Target { get; set; }
}
Purpose¶
Use RoutingBridgeDescriptor when a message must be forwarded, replicated or redirected without embedding routing logic inside business handlers.
graph LR
Source["Source Queue"]
Bridge["Routing Bridge"]
Target["Target Exchange"]
Source --> Bridge
Bridge --> Target
Composition¶
classDiagram
direction LR
class RoutingBridgeDescriptor {
+SubscriberBoundDescriptor Source
+PublisherBoundDescriptor Target
}
class SubscriberBoundDescriptor
class PublisherBoundDescriptor
RoutingBridgeDescriptor --> SubscriberBoundDescriptor : Source
RoutingBridgeDescriptor --> PublisherBoundDescriptor : Target
Source¶
Source contains subscriber settings.
It defines:
- source queue;
- source exchange;
- binding;
- prefetch count;
- retry policy;
- requeue behavior.
Example:
Source = new SubscriberBoundDescriptor
{
Queue = new QueueDescriptor
{
Name = "orders.created",
Durable = true
},
Exchange = new ExchangeDescriptor
{
Name = "orders",
Type = ExchangeTypes.Direct,
Durable = true
},
Binder = new BinderDescriptor
{
RoutingKey = "orders.created"
}
};
Target¶
Target contains publisher settings.
It defines:
- target exchanges;
- target queues;
- exchange chains;
- publish retry policy;
- delivery confirmation.
Example:
Target = new PublisherBoundDescriptor
{
Exchanges =
{
new ExchangeBoundDescriptor
{
Name = "orders.forwarded",
Type = ExchangeTypes.Direct,
Durable = true
}
}
};
Complete Example¶
var descriptor = new RoutingBridgeDescriptor
{
Source = new SubscriberBoundDescriptor
{
Queue = new QueueDescriptor
{
Name = "orders.created",
Durable = true
},
Exchange = new ExchangeDescriptor
{
Name = "orders",
Type = ExchangeTypes.Direct,
Durable = true
},
Binder = new BinderDescriptor
{
RoutingKey = "orders.created"
}
},
Target = new PublisherBoundDescriptor
{
Exchanges =
{
new ExchangeBoundDescriptor
{
Name = "orders.forwarded",
Type = ExchangeTypes.Direct,
Durable = true
}
}
}
};
Runtime Flow¶
sequenceDiagram
participant SourceQueue
participant Bridge
participant TargetExchange
SourceQueue->>Bridge: Deliver message
Bridge->>Bridge: BeforeForwarding
Bridge->>TargetExchange: Publish message
When To Use¶
Use a routing bridge when:
- messages must be replicated;
- routing must be centralized;
- integration logic should not live in business handlers;
- a source queue must forward messages to another topology.
Related Descriptors¶
SubscriberBoundDescriptorPublisherBoundDescriptorExchangeBoundDescriptorQueueDescriptorBinderDescriptor