Skip to content

ServiceDescriptor

ServiceDescriptor is the base descriptor used by RabbitMQ topology objects that have a broker-side name.

ExchangeDescriptor and QueueDescriptor derive from this base model.


Inheritance

classDiagram
    direction TB

    class ServiceDescriptor {
        +string Prefix
        +string Name
        +string FullName
    }

    class ExchangeDescriptor
    class QueueDescriptor

    ServiceDescriptor <|-- ExchangeDescriptor
    ServiceDescriptor <|-- QueueDescriptor

Purpose

ServiceDescriptor defines the naming model used to create physical RabbitMQ objects.

It separates:

Property Meaning
Name Logical descriptor name.
Prefix Namespace applied to the logical name.
FullName Physical RabbitMQ object name.

Name

Name is the logical name used in descriptor configuration.

Example:

new ExchangeDescriptor
{
    Name = "orders"
};

The value is intentionally short and readable.


Prefix

Prefix provides a namespace for the RabbitMQ object.

Default prefixes depend on the concrete descriptor type.

Descriptor Default Prefix
ExchangeDescriptor esb/exchange
QueueDescriptor esb/queue

The prefix can be overridden when a different naming convention is required.


FullName

FullName is the physical RabbitMQ object name used by the provider when declaring exchanges or queues.

Conceptually:

FullName = Prefix + "/" + Name

Example:

new QueueDescriptor
{
    Name = "orders.created"
};

With the default queue prefix, the physical queue name becomes:

esb/queue/orders.created

Runtime Usage

graph LR

    Name --> FullName

    Prefix --> FullName

    FullName --> RabbitMQ

The provider uses FullName when creating RabbitMQ objects.

Application documentation and examples usually use Name, while the Reference explains how FullName is derived.


Best Practices

Use meaningful logical names.

Recommended:

orders
orders.created
payments.completed

Avoid generic names.

test
queue1
event2

Customize Prefix only when you need to align RabbitMQ object names with an existing naming standard.