Created
April 10, 2014 16:48
-
-
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
This file contains hidden or 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
| 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