Attribute based configuration¶
RawRabbit
has support for attribute based configuration in the NuGet package RawRabbit.Attributes
.
Setting up the client¶
In order to get the client to scan messages for attributes, register AttributeConfigEvaluator
as the IConfigurationEvaluator
var client = BusClientFactory.CreateDefault(ioc => ioc
.AddSingleton<IConfigurationEvaluator, AttributeConfigEvaluator>()
);
Configure Messages¶
There are different attributes that configure different configuration aspects: QueueAttribute
, ExchangeAttribute
and RoutingAttribute
. Note that for the Request/Respond pattern only the attributes of the request message type is scanned.
[Queue(Name = "my_queue", MessageTtl = 300, DeadLeterExchange = "dlx", Durable = false)]
[Exchange(Name = "my_topic", Type = ExchangeType.Topic)]
[Routing(RoutingKey = "my_key", NoAck = true, PrefetchCount = 50)]
private class AttributedMessage
{
public string Property { get; set; }
}
Override with custom configuration¶
The AttributeConfigEvaluator
looks for configuration attributes and fallback to the default ConfigurationEvaluator
. It also honors the custom configuration provided in the optional configuraiton argument.
client.SubscribeAsync<AttributedMessage>((message, context) =>
{
tcs.TrySetResult(message);
return Task.FromResult(true);
}, c => c.WithRoutingKey("overridden"));