public void Init(MQPairConfig config) { if (config == null) { return; } StopListeners(); QueueServerListeners.Clear(); Config = config; Name = Config.Name; OnInit(); Core.Status.Attach(collection => { Core.Status.AttachChild(Counters, this); if (QueueServerListeners?.Any() != true) { return; } foreach (var listener in QueueServerListeners) { Core.Status.AttachChild(listener, this); } }); }
public void StopListeners() { if (_tokenSource == null) { return; } Core.Log.InfoBasic("Stopping queue server listeners for {0}", Name); _tokenSource.Cancel(); Task.WaitAll(_listenerTasks.ToArray()); _listenerTasks.Clear(); QueueServerListeners.Each(l => l.Dispose()); QueueServerListeners.Clear(); _tokenSource = null; Core.Log.InfoBasic("Queue server listeners for {0} stopped", Name); }
public void StopListeners() { if (_tokenSource == null) { return; } Core.Log.InfoBasic("Stopping queue server listeners for {0}", Name); _tokenSource.Cancel(); Task.WaitAll(_listenerTasks.ToArray(), Config.RequestOptions.ServerReceiverOptions.ProcessingWaitOnFinalizeInSec); _listenerTasks.Clear(); QueueServerListeners.Each(l => l.Dispose()); QueueServerListeners.Clear(); _tokenSource = null; Core.Log.InfoBasic("Queue server listeners for {0} stopped", Name); }
public void StartListeners() { if (_tokenSource != null) { StopListeners(); } Core.Log.InfoBasic("Configuring server mode for {0} with ResponseServer = {1}", Name, ResponseServer); if (ResponseServer) { ReceiverSerializer = SerializerManager.GetByMimeType(Config.ResponseOptions?.SerializerMimeType); if (ReceiverSerializer != null && Config.ResponseOptions?.CompressorEncodingType.IsNotNullOrEmpty() == true) { ReceiverSerializer.Compressor = CompressorManager.GetByEncodingType(Config.ResponseOptions?.CompressorEncodingType); } SenderSerializer = null; Core.Log.InfoBasic("Adding queue client listener for {0}, Environment: {1}", Name, Core.EnvironmentName); _clientQueues = Config.ClientQueues?.FirstOf( c => c.EnvironmentName?.SplitAndTrim(",").Contains(Core.EnvironmentName) == true && c.MachineName?.SplitAndTrim(",").Contains(Core.MachineName) == true, c => c.EnvironmentName?.SplitAndTrim(",").Contains(Core.EnvironmentName) == true, c => c.MachineName?.SplitAndTrim(",").Contains(Core.MachineName) == true, c => c.EnvironmentName.IsNullOrWhitespace()); if (_clientQueues?.RecvQueue != null) { var queueListener = OnCreateQueueServerListener(_clientQueues.RecvQueue, ResponseServer); queueListener.ResponseReceived += QueueListener_ResponseReceived; QueueServerListeners.Add(queueListener); } else { Core.Log.Warning("There aren't any Receiver Queue for the Client Listener. Check the ClientQueues element on the queue config file."); } } else { ReceiverSerializer = SerializerManager.GetByMimeType(Config.RequestOptions?.SerializerMimeType); if (ReceiverSerializer != null && Config.RequestOptions?.CompressorEncodingType.IsNotNullOrEmpty() == true) { ReceiverSerializer.Compressor = CompressorManager.GetByEncodingType(Config.RequestOptions?.CompressorEncodingType); } SenderSerializer = SerializerManager.GetByMimeType(Config.ResponseOptions?.SerializerMimeType); if (SenderSerializer != null && Config.ResponseOptions?.CompressorEncodingType.IsNotNullOrEmpty() == true) { SenderSerializer.Compressor = CompressorManager.GetByEncodingType(Config.ResponseOptions?.CompressorEncodingType); } Core.Log.InfoBasic("Adding queue server listeners for {0}, Environment: {1}", Name, Core.EnvironmentName); _serverQueues = Config.ServerQueues?.FirstOf( c => c.EnvironmentName?.SplitAndTrim(",").Contains(Core.EnvironmentName) == true && c.MachineName?.SplitAndTrim(",").Contains(Core.MachineName) == true, c => c.EnvironmentName?.SplitAndTrim(",").Contains(Core.EnvironmentName) == true, c => c.MachineName?.SplitAndTrim(",").Contains(Core.MachineName) == true, c => c.EnvironmentName.IsNullOrWhitespace()); if (_serverQueues?.RecvQueues?.Any() == true) { _serverQueues.RecvQueues.Each(queue => { var queueListener = OnCreateQueueServerListener(queue, ResponseServer); queueListener.RequestReceived += QueueListener_RequestReceived; QueueServerListeners.Add(queueListener); }); } else { Core.Log.Warning("There aren't any Receiver Queue for the Server Listeners. Check the ServerQueues element on the queue config file."); } } if (QueueServerListeners.Count > 0) { Core.Log.InfoBasic("Starting queue server listeners for {0}", Name); _tokenSource = new CancellationTokenSource(); _listenerTasks.Clear(); foreach (var listener in QueueServerListeners) { _listenerTasks.Add(InitListener(listener)); } } else { Core.Log.Warning("There are not server listener to start."); } }