public void Establish() { _mapper = new HeartbeatReplyCommandMessageMapper(); _request = new HeartbeatReply("Test.Hostname", new ReplyAddress(TOPIC, _correlationId)); _firstConsumer = new RunningConsumer(new ConnectionName("Test.Connection"), ConsumerState.Open); _request.Consumers.Add(_firstConsumer); _secondConsumer = new RunningConsumer(new ConnectionName("More.Consumers"), ConsumerState.Shut); _request.Consumers.Add(_secondConsumer); }
public HeartbeatReplyToMessageMapperTests() { _mapper = new HeartbeatReplyCommandMessageMapper(); _request = new HeartbeatReply("Test.Hostname", new ReplyAddress(TOPIC, _correlationId)); var firstConsumer = new RunningConsumer(new ConsumerName("Test.Consumer1"), ConsumerState.Open); _request.Consumers.Add(firstConsumer); var secondConsumer = new RunningConsumer(new ConsumerName("More.Consumers2"), ConsumerState.Shut); _request.Consumers.Add(secondConsumer); }
private void StopConsumer(RunningConsumer runningConsumer) { if (runningConsumer.Subscription == null) { return; } _logger.Information("Stopping {Consumer} subscribed to {StreamName} in group {GroupName}", runningConsumer.Consumer.GetType().Name, runningConsumer.Consumer.StreamName, runningConsumer.Consumer.GroupName); runningConsumer.Subscription.Stop(TimeSpan.FromSeconds(10)); }
private void StopConsumer(RunningConsumer runningProjection) { if (runningProjection.Subscription == null) { return; } _logger.Information("Stopping {Consumer} subscribed to {StreamName}", runningProjection.Consumer.GetType().Name, runningProjection.Consumer.StreamName); runningProjection.Subscription.Stop(); }
private async Task StartConsumerAsync(RunningConsumer runningConsumer) { var consumerId = GetConsumerId(runningConsumer.Consumer); _logger.Information("Starting {Consumer} subscribed to {StreamName} in group {GroupName}", runningConsumer.Consumer.GetType().Name, runningConsumer.Consumer.StreamName, runningConsumer.Consumer.GroupName); var settings = CatchUpSubscriptionSettings.Default; runningConsumer.Subscription = await _connection.ConnectToPersistentSubscriptionAsync( runningConsumer.Consumer.StreamName, runningConsumer.Consumer.GroupName, OnEventAppeared(runningConsumer.Consumer), OnSubscriptionDropped(runningConsumer), autoAck : false, bufferSize : _settings.PersistentSubscriptionBufferSize.GetValueOrDefault(DefaultBufferSize) ); }
private async Task StartConsumerAsync(RunningConsumer runningConsumer) { var consumerId = GetConsumerId(runningConsumer.Consumer); long?checkpoint = await _checkpointManager.LoadCheckpointAsync(consumerId); _logger.Information("Starting {Consumer} subscribed to {StreamName} from Checkpoint #{Checkpoint}", runningConsumer.Consumer.GetType().Name, runningConsumer.Consumer.StreamName, checkpoint); var settings = CatchUpSubscriptionSettings.Default; runningConsumer.Subscription = _connection.SubscribeToStreamFrom( runningConsumer.Consumer.StreamName, checkpoint, settings, OnEventAppeared(runningConsumer.Consumer), OnLiveProcessingStarted(runningConsumer.Consumer), OnSubscriptionDropped(runningConsumer)); }
private Action <EventStorePersistentSubscriptionBase, SubscriptionDropReason, Exception> OnSubscriptionDropped(RunningConsumer runningConsumer) { return((sub, reason, exception) => { if (!SkipStopReasons.Contains(reason)) { try { sub.Stop(TimeSpan.FromSeconds(SubscriptionStopTimeoutSeconds)); } catch (Exception ex) { _logger.Error(ex, "Error stopping persistent subscription to {StreamName} in group {GroupName} with reason {Reason}", runningConsumer.Consumer.StreamName, runningConsumer.Consumer.GroupName, reason.ToString()); } } if (!_stopping) { _logger.Error(exception, "{Consumer} dropped subscription to {StreamName} in group {GroupName} with reason {Reason}", GetConsumerId(runningConsumer.Consumer), runningConsumer.Consumer.StreamName, runningConsumer.Consumer.GroupName, reason.ToString()); if (reason == SubscriptionDropReason.EventHandlerException) { _logger.Fatal(exception, "Subscription to {StreamName} in group {GroupName} has been dropped due to an exception. Please restart", runningConsumer.Consumer.StreamName, runningConsumer.Consumer.GroupName); } else { StartConsumerAsync(runningConsumer).GetAwaiter().GetResult(); } } }); }
private Action <EventStoreCatchUpSubscription, SubscriptionDropReason, Exception> OnSubscriptionDropped(RunningConsumer runningConsumer) { return((sub, reason, exception) => { sub.Stop(); if (!_stopping) { _logger.Error(exception, "{Consumer} dropped subscription to {StreamName} with reason {Reason}", GetConsumerId(runningConsumer.Consumer), runningConsumer.Consumer.StreamName, reason.ToString()); StartConsumerAsync(runningConsumer).GetAwaiter().GetResult(); } }); }