Skip to content

Instantly share code, notes, and snippets.

@andreasohlund
Created April 10, 2014 16:48
Show Gist options
  • Select an option

  • Save andreasohlund/10401244 to your computer and use it in GitHub Desktop.

Select an option

Save andreasohlund/10401244 to your computer and use it in GitHub Desktop.
Demonstrates how to use a pipeline override to change the message type of a received message
class MessageUpConverter : IBehavior<ReceiveLogicalMessageContext>
{
public MessageMetadataRegistry MessageMetadataRegistry { get; set; }
public void Invoke(ReceiveLogicalMessageContext context, Action next)
{
Console.Out.WriteLine("Upconverter invoked");
var meta = MessageMetadataRegistry.GetMessageDefinition(typeof (V2Message));
context.Set(new LogicalMessage(meta,new V2Message(),context.LogicalMessage.Headers));
next();
}
}
class MessageUpConverterSetup : PipelineOverride
{
public override void Override(BehaviorList<ReceiveLogicalMessageContext> behaviorList)
{
behaviorList.InsertBefore<ApplyIncomingMessageMutatorsBehavior, MessageUpConverter>();
}
}
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server
{
}
class Starter:IWantToRunWhenBusStartsAndStops
{
public IBus Bus { get; set; }
public void Start()
{
Bus.SendLocal(new V1Message());
}
public void Stop()
{
}
}
class V2MessageHandler:IHandleMessages<V2Message>
{
public void Handle(V2Message message)
{
Console.Out.WriteLine("Yay1");
}
}
public class V2Message:IMessage
{
}
public class V1Message:IMessage
{
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment