private static async Task StoreSnooperExports(ISnooperExportFacade snooperExportFacade, IEnumerable <SnooperExportCollection> snoopersExportsCollections) { foreach (var snooperExportCollection in snoopersExportsCollections) { await snooperExportFacade.InsertAsync(snooperExportCollection); } }
private async Task StoreSnooperExportCollectionAsync(ISnooperExportFacade snooperExportFacade, SnooperExportCollection snooperExportCollection) { try { await snooperExportFacade.InsertAsync(snooperExportCollection).ConfigureAwait(false); } catch (Exception e) { this._logger.Error(e, "SnooperExportCollection storage error"); throw; } }
private void SetupAndRunProcessingPipeline(Predicate <L7Conversation> l7ConversationFilter, Int32 sourceQueueSize, ISnooperExportFacade snooperExportFacade) { var snooperRunner = this.CreateAndInitializeSnooperRunner(); var storageAndLogSink = Sink.ForEachParallel <SnooperExportCollection>( 1024, async snooperExportCollection => { #if DEBUG this.LogSnooperExportCollectionExceptions(snooperExportCollection); #endif await StoreSnooperExportCollectionAsync(snooperExportFacade, snooperExportCollection).ConfigureAwait(false); }); var l7ConversationStreamSource = Source.Queue <L7Conversation>(sourceQueueSize, OverflowStrategy.Backpressure) .Where(l7ConversationFilter).SelectAsyncUnordered( Environment.ProcessorCount, conversation => this.ProcessConversationAsync(conversation, snooperRunner)) .WhereNot(collection => collection is SnooperEmptyExportCollection); (this._l7ConversationStreamSourceQueue, this._processingStreamCompletitionTask) = l7ConversationStreamSource .ToMaterialized(storageAndLogSink, Keep.Both) .Run(Context.System.Materializer()); }
public static Props Props(IActorRef contractor, Predicate <IL7Conversation> l7ConversationFilter, ISnooperExportFacade snooperExportFacade) => Akka.Actor.Props.Create <ApplicationProtocolExportActor>(contractor, l7ConversationFilter, snooperExportFacade);
public ApplicationProtocolExportActor(IActorRef contractor, Predicate <L7Conversation> l7ConversationFilter, ISnooperExportFacade snooperExportFacade) { this._contractor = contractor; this.SetupAndRunProcessingPipeline(l7ConversationFilter, 4096, snooperExportFacade); this.Become(this.ProcessingBehaviour); }