/// <summary> /// KafkaConsumerActor /// </summary> /// <param name="owner">Owner actor to send critical failures to</param> /// <param name="settings">Consumer settings</param> /// <param name="statisticsHandler">Statistics handler</param> /// <param name="decider"></param> /// <param name="partitionEventHandler">Partion events handler</param> public KafkaConsumerActor(IActorRef owner, ConsumerSettings <K, V> settings, Decider decider, IPartitionEventHandler partitionEventHandler, IStatisticsHandler statisticsHandler) { _owner = owner; _settings = settings; _decider = decider; _statisticsHandler = statisticsHandler; _partitionEventHandler = partitionEventHandler; var restrictedConsumerTimeoutMs = Math.Round(_settings.PartitionHandlerWarning.TotalMilliseconds * 0.95); _restrictedConsumer = new RestrictedConsumer <K, V>(_consumer, TimeSpan.FromMilliseconds(restrictedConsumerTimeoutMs)); _warningDuration = _settings.PartitionHandlerWarning; _pollMessage = new Internal.Poll <K, V>(this, periodic: true); _delayedPollMessage = new Internal.Poll <K, V>(this, periodic: false); _log = Context.GetLogger(); }
public GroupByProcessorImpl(ActorMaterializerSettings settings, int maxSubstreams, Func <object, object> keyFor) : base(settings) { _maxSubstreams = maxSubstreams; _keyFor = keyFor; _decider = settings.SupervisionDecider; var waitFirst = new TransferPhase(PrimaryInputs.NeedsInput.And(PrimaryOutputs.NeedsDemand), () => { var element = PrimaryInputs.DequeueInputElement(); object key; if (TryKeyFor(element, out key)) { NextPhase(OpenSubstream(element, key)); } }); _waitNext = new TransferPhase(PrimaryInputs.NeedsInput, () => { var element = PrimaryInputs.DequeueInputElement(); object key; if (TryKeyFor(element, out key)) { SubstreamOutput substream; if (_keyToSubstreamOutput.TryGetValue(key, out substream)) { if (substream.IsOpen) { NextPhase(DispatchToSubstream(element, substream)); } } else if (PrimaryOutputs.IsOpen) { NextPhase(OpenSubstream(element, key)); } } }); InitialPhase(1, waitFirst); }
/// <summary> /// Gets actor props /// </summary> internal static Props GetProps <K, V>(IActorRef owner, ConsumerSettings <K, V> settings, Decider decider, IPartitionEventHandler handler, IStatisticsHandler statisticsHandler) => Props.Create(() => new KafkaConsumerActor <K, V>(owner, settings, decider, handler, statisticsHandler)).WithDispatcher(settings.DispatcherId);
/// <summary> /// Gets actor props /// </summary> public static Props GetProps <K, V>(ConsumerSettings <K, V> settings, Decider decider) => Props.Create(() => new KafkaConsumerActor <K, V>(ActorRefs.Nobody, settings, decider, new PartitionEventHandlers.Empty(), new StatisticsHandlers.Empty())).WithDispatcher(settings.DispatcherId);
public ExternalPlainSourceIntegrationTests(ITestOutputHelper output, KafkaFixture fixture) : base(nameof(ExternalPlainSourceIntegrationTests), output, fixture) { _defaultDecider = new DefaultConsumerDecider(true).Decide; }