public void Start() { try { isWorking = true; endpoint.Open(); while (isWorking) { List <EndpointMessage> rawMessages = new List <EndpointMessage>(); for (int i = 0; i < messageThreshold.Size; i++) { EndpointMessage rawMessage = null; if (!endpoint.BlockDequeue(messageThreshold.Delay, out rawMessage)) { break; } CronusMessage transportMessage = (CronusMessage)serializer.DeserializeFromBytes(rawMessage.Body); var subscribers = subscriptions.GetInterestedSubscribers(transportMessage); foreach (var subscriber in subscribers) { subscriber.Process(transportMessage); } rawMessages.Add(rawMessage); } endpoint.AcknowledgeAll(); } } catch (EndpointClosedException ex) { log.DebugException("Endpoint Closed", ex); } catch (Exception ex) { log.ErrorException("Unexpected Exception.", ex); } finally { try { endpoint.AcknowledgeAll(); endpoint.Close(); } catch (EndpointClosedException ex) { log.DebugException("Endpoint Closed", ex); } ScheduledStart = DateTime.UtcNow.AddMilliseconds(30); } }
public void Close() { if (!_listening) { return; } _listening = false; if (_session != null) { _session.IsListening = false; } _endpoint.Close(); }
public void Close() { _listening = false; _endpoint.Close(); }