public void LogAlreadyProcessed_Logged() { var envelope = new RawInboundEnvelope( Stream.Null, new MessageHeaderCollection { { DefaultMessageHeaders.MessageType, "Message.Type" }, { DefaultMessageHeaders.MessageId, "1234" } }, new TestConsumerEndpoint("test1, test2"), "test1", new TestOffset("a", "42")); var expectedMessage = "Message is being skipped since it was already processed. | " + "endpointName: test1, " + "messageType: Message.Type, " + "messageId: 1234, " + "unused1: (null), " + "unused2: (null)"; _inboundLogger.LogAlreadyProcessed(envelope); _loggerSubstitute.Received(LogLevel.Information, null, expectedMessage, 1072); }
public void LogAlreadyProcessed_Logged() { var envelope = new RawInboundEnvelope( Stream.Null, new MessageHeaderCollection { { DefaultMessageHeaders.MessageType, "Message.Type" }, { DefaultMessageHeaders.MessageId, "1234" }, { KafkaMessageHeaders.KafkaMessageKey, "key1234" } }, new KafkaConsumerEndpoint("topic1", "topic2"), "topic2", new KafkaOffset("topic2", 2, 42)); var expectedMessage = "Message is being skipped since it was already processed. | " + "endpointName: topic2, " + "messageType: Message.Type, " + "messageId: 1234, " + "offset: [2]@42, " + "kafkaKey: key1234"; _inboundLogger.LogAlreadyProcessed(envelope); _loggerSubstitute.Received(LogLevel.Information, null, expectedMessage, 1072); }
private async Task <bool> CheckIsAlreadyProcessedAsync(ConsumerPipelineContext context) { if (context.Envelope.Endpoint.ExactlyOnceStrategy == null) { return(false); } var strategyImplementation = context.Envelope.Endpoint.ExactlyOnceStrategy.Build(context.ServiceProvider); if (!await strategyImplementation.CheckIsAlreadyProcessedAsync(context).ConfigureAwait(false)) { return(false); } _logger.LogAlreadyProcessed(context.Envelope); return(true); }