Skip to content

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.

  • SubscriberBoundDescriptor
  • PublisherBoundDescriptor
  • ExchangeBoundDescriptor
  • QueueDescriptor
  • BinderDescriptor