From 94c8fff7371a5adebdaf5aa2185fa25e07006b25 Mon Sep 17 00:00:00 2001 From: pardahlman Date: Sun, 7 May 2017 20:37:13 +0200 Subject: [PATCH] (#224) Create dedicated channel for Message Sequence --- .../RawRabbit.Operations.MessageSequence.csproj | 1 + .../StateMachine/MessageSequence.cs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/RawRabbit.Operations.MessageSequence/RawRabbit.Operations.MessageSequence.csproj b/src/RawRabbit.Operations.MessageSequence/RawRabbit.Operations.MessageSequence.csproj index 1e382524..767a2c1b 100644 --- a/src/RawRabbit.Operations.MessageSequence/RawRabbit.Operations.MessageSequence.csproj +++ b/src/RawRabbit.Operations.MessageSequence/RawRabbit.Operations.MessageSequence.csproj @@ -21,6 +21,7 @@ + diff --git a/src/RawRabbit.Operations.MessageSequence/StateMachine/MessageSequence.cs b/src/RawRabbit.Operations.MessageSequence/StateMachine/MessageSequence.cs index 4f743fe5..d5ac9167 100644 --- a/src/RawRabbit.Operations.MessageSequence/StateMachine/MessageSequence.cs +++ b/src/RawRabbit.Operations.MessageSequence/StateMachine/MessageSequence.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using RabbitMQ.Client; using RawRabbit.Logging; using RawRabbit.Operations.MessageSequence.Configuration; using RawRabbit.Operations.MessageSequence.Configuration.Abstraction; @@ -11,6 +12,7 @@ using RawRabbit.Operations.StateMachine; using RawRabbit.Operations.StateMachine.Trigger; using RawRabbit.Pipe; +using RawRabbit.Pipe.Middleware; using Stateless; namespace RawRabbit.Operations.MessageSequence.StateMachine @@ -24,6 +26,7 @@ public class MessageSequence : StateMachineBase _stepDefinitions; private readonly List _subscriptions; private readonly ILogger _logger = LogManager.GetLogger(); + private IModel _channel; public MessageSequence(IBusClient client, SequenceModel model = null) : base(model) { @@ -186,6 +189,7 @@ MessageSequence IMessageSequenceBuilder.Complete() { subscription.Dispose(); } + _channel.Dispose(); }); var trigger = StateMachine.SetTriggerParameters(typeof(TMessage)); @@ -222,12 +226,15 @@ MessageSequence IMessageSequenceBuilder.Complete() ) ); + _channel = _client.CreateChannelAsync().GetAwaiter().GetResult(); + foreach (var triggerCfg in _triggerConfigurer.TriggerConfiguration) { triggerCfg.Context += context => { context.Properties.Add(StateMachineKey.ModelId, Model.Id); context.Properties.Add(StateMachineKey.Machine, this); + context.Properties.TryAdd(PipeKey.Channel, _channel); }; var ctx = _client.InvokeAsync(triggerCfg.Pipe, triggerCfg.Context).GetAwaiter().GetResult(); _subscriptions.Add(ctx.GetSubscription());