Last active
November 18, 2019 16:06
-
-
Save ramonsmits/7461414559acb76c1c54da623e574b17 to your computer and use it in GitHub Desktop.
Wrap IEndpointInstance to set custom options on all sends with NServiceBus 7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Threading; | |
using System.Threading.Tasks; | |
using NServiceBus; | |
public class CustomOptionsWrapper : IEndpointInstance | |
{ | |
readonly IEndpointInstance innerInstance; | |
readonly IPrincipalAccessor principalAccessor; | |
public CustomOptionsWrapper(IEndpointInstance innerInstance, IPrincipalAccessor principalAccessor) | |
{ | |
this.innerInstance = innerInstance; | |
} | |
public Task Send(object message, SendOptions options) | |
{ | |
options.SetHeader("UserName", principalAccessor.CurrentPrincipal.Identity.Name); | |
return innerInstance.Send(message, options); | |
} | |
public Task Send<T>(Action<T> messageConstructor, SendOptions options) | |
{ | |
options.SetHeader("UserName", principalAccessor.CurrentPrincipal.Identity.Name); | |
return innerInstance.Send(messageConstructor, options); | |
} | |
public Task Publish(object message, PublishOptions options) | |
{ | |
options.SetHeader("UserName", principalAccessor.CurrentPrincipal.Identity.Name); | |
return innerInstance.Publish(message, options); | |
} | |
public Task Publish<T>(Action<T> messageConstructor, PublishOptions publishOptions) | |
{ | |
publishOptions.SetHeader("UserName", principalAccessor.CurrentPrincipal.Identity.Name); | |
return innerInstance.Publish(messageConstructor, publishOptions); | |
} | |
public Task Subscribe(Type eventType, SubscribeOptions options) | |
{ | |
return innerInstance.Subscribe(eventType, options); | |
} | |
public Task Unsubscribe(Type eventType, UnsubscribeOptions options) | |
{ | |
return innerInstance.Unsubscribe(eventType, options); | |
} | |
public Task Stop() | |
{ | |
return innerInstance.Stop(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment