コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }