├── README.md
├── .vscode
└── settings.json
├── src
├── Confluent.Kafka.Core
│ ├── Models
│ │ ├── Internal
│ │ │ ├── KafkaSenderType.cs
│ │ │ ├── KafkaSenderConstants.cs
│ │ │ ├── KafkaSender.cs
│ │ │ ├── MessageValueExtensions.cs
│ │ │ ├── HeadersExtensions.cs
│ │ │ ├── HeaderExtensions.cs
│ │ │ ├── MessageExtensions.cs
│ │ │ └── TopicPartitionExtensions.cs
│ │ └── TopicPartitionException.cs
│ ├── Mapping
│ │ └── Internal
│ │ │ ├── IMapper`.cs
│ │ │ └── MapperExtensions.cs
│ ├── Conversion
│ │ └── Internal
│ │ │ ├── IOptionsConverter`.cs
│ │ │ └── OptionsConverterExtensions.cs
│ ├── Consumer
│ │ ├── Internal
│ │ │ ├── IConsumerBuilder``.cs
│ │ │ ├── ConsumeResultConstants.cs
│ │ │ ├── IConsumerAccessor``.cs
│ │ │ ├── KafkaConsumerHandlerFactoryOptions.cs
│ │ │ ├── KafkaConsumerInterceptorContext``.cs
│ │ │ ├── KafkaConsumerBuilderExtensions.cs
│ │ │ ├── IKafkaConsumerFactory.cs
│ │ │ ├── IKafkaConsumerHandlerFactory.cs
│ │ │ ├── KafkaConsumerConfigExtensions.cs
│ │ │ ├── ConsumerExtensions.cs
│ │ │ └── KafkaConsumerHandlerFactoryOptionsBuilder.cs
│ │ └── KafkaConsumerConfigException.cs
│ ├── Producer
│ │ ├── Internal
│ │ │ ├── IProducerBuilder``.cs
│ │ │ ├── IProducerAccessor``.cs
│ │ │ ├── KafkaProducerHandlerFactoryOptions.cs
│ │ │ ├── IDeliveryReportFactory.cs
│ │ │ ├── KafkaProducerConstants.cs
│ │ │ ├── KafkaProducerInterceptorContext``.cs
│ │ │ ├── ProducerExtensions.cs
│ │ │ ├── KafkaProducerBuilderExtensions.cs
│ │ │ ├── IKafkaProducerFactory.cs
│ │ │ ├── IKafkaProducerHandlerFactory.cs
│ │ │ ├── ProduceResult``.cs
│ │ │ ├── DeliveryReportFactory.cs
│ │ │ ├── KafkaProducerExtensions.cs
│ │ │ ├── KafkaProducerOptions``.cs
│ │ │ └── KafkaProducerHandlerFactoryOptionsBuilder.cs
│ │ └── KafkaProducerConfigException.cs
│ ├── Idempotency
│ │ └── Internal
│ │ │ └── KafkaIdempotencyConstants.cs
│ ├── Internal
│ │ ├── IObjectFactory.cs
│ │ ├── DictionaryExtensions.cs
│ │ ├── ExceptionExtensions.cs
│ │ ├── AssemblyScanner.cs
│ │ └── ObjectFactory.cs
│ ├── Hosting
│ │ ├── Internal
│ │ │ ├── ExecutionResult.cs
│ │ │ └── MessageOrderGuaranteeConstants.cs
│ │ ├── KafkaConsumerWorkerConfigException.cs
│ │ └── Retry
│ │ │ └── KafkaRetryConsumerWorkerConfigException.cs
│ ├── Diagnostics
│ │ ├── Internal
│ │ │ ├── OperationNames.cs
│ │ │ ├── KafkaActivitySource.cs
│ │ │ ├── KafkaDiagnosticsManager.cs
│ │ │ ├── PropagationContext.cs
│ │ │ ├── IKafkaDiagnosticsManagerFactory.cs
│ │ │ ├── KafkaNoopDiagnosticsManager.cs
│ │ │ ├── KafkaEnrichmentOptions.cs
│ │ │ ├── KafkaActivityAttributes.cs
│ │ │ ├── ActivitySourceBase.cs
│ │ │ └── ActivityExtensions.cs
│ │ └── KafkaDiagnosticsServiceCollectionExtensions.cs
│ ├── Threading
│ │ ├── Internal
│ │ │ ├── IAsyncLockFactory.cs
│ │ │ ├── IAsyncSemaphore.cs
│ │ │ ├── IAsyncLockOptionsBuilder.cs
│ │ │ ├── AsyncLockContext.cs
│ │ │ ├── AsyncLockOptionsBuilderExtensions.cs
│ │ │ ├── AsyncLockFactory.cs
│ │ │ ├── TaskActivity.cs
│ │ │ ├── AsyncLockOptionsBuilder.cs
│ │ │ └── AsyncLockOptions.cs
│ │ └── AsyncLockOptionsException.cs
│ ├── Retry
│ │ └── Internal
│ │ │ └── KafkaRetryConstants.cs
│ ├── Serialization
│ │ └── Internal
│ │ │ ├── SyncOverAsyncSerializerExtensions.cs
│ │ │ ├── SyncOverAsyncDeserializerExtensions.cs
│ │ │ └── SerializationExtensions.cs
│ └── DependencyInjection
│ │ └── KafkaServiceCollectionExtensions.cs
├── Confluent.Kafka.Core.Abstractions
│ ├── Models
│ │ ├── IMessageValue.cs
│ │ ├── KafkaTopicPartitionLag.cs
│ │ └── KafkaMetadataMessage.cs
│ ├── Specifications
│ │ ├── ISpecification`.cs
│ │ └── ExpressionSpecification`.cs
│ ├── Encoding
│ │ ├── IEncodingFactory.cs
│ │ └── EncodingFactory.cs
│ ├── Hosting
│ │ ├── Retry
│ │ │ ├── IKafkaRetryConsumerWorker.cs
│ │ │ ├── IKafkaRetryConsumerWorkerConfig.cs
│ │ │ ├── IKafkaRetryConsumerWorkerOptions.cs
│ │ │ └── IKafkaRetryConsumerWorkerConfigBuilder.cs
│ │ ├── IConsumeResultErrorHandler``.cs
│ │ ├── IConsumeResultHandler``.cs
│ │ ├── IKafkaConsumerWorker``.cs
│ │ ├── IKafkaConsumerLifecycleWorker``.cs
│ │ ├── IKafkaConsumerWorkerConfig.cs
│ │ ├── IKafkaConsumerWorkerOptions``.cs
│ │ └── IKafkaConsumerWorkerConfigBuilder.cs
│ ├── Diagnostics
│ │ ├── KafkaSyncProductionEnrichmentContext.cs
│ │ ├── KafkaProcessingFailureEnrichmentContext.cs
│ │ ├── KafkaProductionFailureEnrichmentContext.cs
│ │ ├── KafkaProcessingEnrichmentContext.cs
│ │ ├── KafkaConsumptionFailureEnrichmentContext.cs
│ │ ├── IPropagationContext.cs
│ │ ├── IContextPropagator.cs
│ │ ├── IKafkaDiagnosticsManager.cs
│ │ ├── KafkaConsumptionEnrichmentContext.cs
│ │ ├── KafkaAsyncProductionEnrichmentContext.cs
│ │ ├── IKafkaEnrichmentOptionsBuilder.cs
│ │ └── IKafkaActivityEnricher.cs
│ ├── Consumer
│ │ ├── IKafkaConsumerInterceptor``.cs
│ │ ├── IKafkaConsumerInterceptorContext``.cs
│ │ ├── IKafkaConsumerHandlerFactoryOptionsBuilder.cs
│ │ ├── IKafkaConsumerConfig.cs
│ │ ├── ConsumeExceptionExtensions.cs
│ │ ├── IKafkaConsumerHandlerFactory``.cs
│ │ ├── IKafkaConsumer``.cs
│ │ ├── IKafkaConsumerConfigBuilder.cs
│ │ └── IConsumerConfig.cs
│ ├── Producer
│ │ ├── IKafkaProducerInterceptor``.cs
│ │ ├── IKafkaProducerInterceptorContext``.cs
│ │ ├── IKafkaProducerHandlerFactoryOptionsBuilder.cs
│ │ ├── IKafkaProducerHandlerFactory``.cs
│ │ ├── IKafkaProducerConfig.cs
│ │ ├── ProduceExceptionExtensions.cs
│ │ ├── IKafkaProducerConfigBuilder.cs
│ │ ├── IProducerConfig.cs
│ │ ├── IKafkaProducerOptions``.cs
│ │ ├── IKafkaProducer``.cs
│ │ └── IProducerConfigBuilder`.cs
│ ├── Client
│ │ ├── IConfig.cs
│ │ └── IConfigBuilder`.cs
│ ├── Idempotency
│ │ └── IIdempotencyHandler``.cs
│ ├── Retry
│ │ ├── IRetryHandler``.cs
│ │ └── RetrySpecification.cs
│ └── Confluent.Kafka.Core.Abstractions.csproj
├── Shared
│ ├── SchemaRegistry
│ │ ├── IUnregisteredSchemaBuilder.cs
│ │ ├── Internal
│ │ │ ├── SchemaRegistryClientConstants.cs
│ │ │ ├── ISchemaRegistryClientFactory.cs
│ │ │ ├── SchemaBuilder.cs
│ │ │ └── SchemaRegistryClientBuilder.cs
│ │ ├── ISchemaBuilder.cs
│ │ ├── IRegisteredSchemaBuilder.cs
│ │ ├── ISchemaBuilder`.cs
│ │ ├── ISchemaRegistryClientBuilder.cs
│ │ └── SchemaRegistryClientServiceCollectionExtensions.cs
│ ├── Builders
│ │ ├── IFunctionalBuilder``.cs
│ │ ├── IFunctionalBuilder```.cs
│ │ └── FunctionalBuilder``.cs
│ ├── IsExternalInit.cs
│ └── Extensions
│ │ ├── LoggerFactoryExtensions.cs
│ │ ├── TaskExtensions.cs
│ │ └── ValidatableObjectExtensions.cs
├── Confluent.Kafka.Core.Retry.Polly
│ ├── Internal
│ │ ├── PollyRetryHandlerConstants.cs
│ │ ├── LoggerExtensions.cs
│ │ └── IPollyRetryHandlerFactory.cs
│ ├── PollyRetryHandlerOptionsException.cs
│ ├── PollyRetryHandlerKafkaBuilderExtensions.cs
│ ├── IPollyRetryHandlerOptionsBuilder.cs
│ ├── PollyRetryHandlerKafkaConsumerBuilderExtensions.cs
│ ├── PollyRetryHandlerKafkaProducerBuilderExtensions.cs
│ ├── PollyRetryHandlerKafkaConsumerWorkerBuilderExtensions.cs
│ ├── PollyRetryHandlerKafkaRetryConsumerWorkerBuilderExtensions.cs
│ └── PollyRetryHandlerServiceCollectionExtensions.cs
├── Confluent.Kafka.Core.Serialization.ProtobufNet
│ ├── ProtobufNetSerializerOptions.cs
│ ├── Internal
│ │ ├── ProtobufNetSerializerConstants.cs
│ │ ├── IProtobufNetSerializerFactory.cs
│ │ └── ProtobufNetSerializerOptionsBuilder.cs
│ ├── IProtobufNetSerializerOptionsBuilder.cs
│ └── ProtobufNetSerializerKafkaBuilderExtensions.cs
├── Confluent.Kafka.Core.Serialization.JsonCore
│ ├── Internal
│ │ ├── JsonCoreSerializerConstants.cs
│ │ ├── IJsonCoreSerializerFactory.cs
│ │ ├── JsonCoreSerializer`.cs
│ │ └── JsonCoreSerializerFactory.cs
│ └── JsonCoreSerializerKafkaBuilderExtensions.cs
├── Confluent.Kafka.Core.Idempotency.Redis
│ ├── Internal
│ │ ├── RedisIdempotencyHandlerConstants.cs
│ │ ├── RedisClientConstants.cs
│ │ ├── IRedisClientFactory.cs
│ │ └── IRedisIdempotencyHandlerFactory.cs
│ ├── IRedisIdempotencyHandlerBuilder``.cs
│ ├── RedisIdempotencyHandlerOptionsException``.cs
│ ├── IRedisIdempotencyHandlerOptionsBuilder``.cs
│ ├── RedisIdempotencyHandlerKafkaBuilderExtensions.cs
│ ├── RedisIdempotencyHandlerKafkaConsumerWorkerBuilderExtensions.cs
│ ├── RedisIdempotencyHandlerKafkaRetryConsumerWorkerBuilderExtensions.cs
│ ├── RedisClientServiceCollectionExtensions.cs
│ └── RedisIdempotencyHandlerServiceCollectionExtensions.cs
├── Confluent.Kafka.Core.Serialization.NewtonsoftJson
│ ├── Internal
│ │ ├── NewtonsoftJsonSerializerConstants.cs
│ │ ├── INewtonsoftJsonSerializerFactory.cs
│ │ └── NewtonsoftJsonSerializer`.cs
│ └── NewtonsoftJsonSerializerKafkaBuilderExtensions.cs
├── Confluent.Kafka.Core.OpenTelemetry
│ ├── TracerProviderBuilderExtensions.cs
│ └── Confluent.Kafka.Core.OpenTelemetry.csproj
├── Confluent.Kafka.Core.Serialization.SchemaRegistry.Avro
│ ├── Internal
│ │ ├── SchemaRegistryAvroSerializerConstants.cs
│ │ ├── ISchemaRegistryAvroSerializerFactory.cs
│ │ └── SchemaRegistryAvroSerializer`.cs
│ ├── ISchemaRegistryAvroSerializerBuilder.cs
│ ├── IAvroDeserializerConfigBuilder.cs
│ ├── SchemaRegistryAvroSerializerKafkaBuilderExtensions.cs
│ └── IAvroSerializerConfigBuilder.cs
├── Confluent.Kafka.Core.Serialization.SchemaRegistry.Json
│ ├── Internal
│ │ ├── SchemaRegistryJsonSerializerConstants.cs
│ │ ├── ISchemaRegistryJsonSerializerFactory.cs
│ │ └── JsonSchemaGeneratorSettingsBuilder.cs
│ ├── IJsonSchemaGeneratorSettingsBuilder.cs
│ ├── INewtonsoftJsonSchemaGeneratorSettingsBuilder.cs
│ ├── IJsonDeserializerConfigBuilder.cs
│ ├── SchemaRegistryJsonSerializerKafkaBuilderExtensions.cs
│ ├── ISchemaRegistryJsonSerializerBuilder.cs
│ └── IJsonSerializerConfigBuilder.cs
└── Confluent.Kafka.Core.Serialization.SchemaRegistry.Protobuf
│ ├── Internal
│ ├── SchemaRegistryProtobufSerializerConstants.cs
│ └── ISchemaRegistryProtobufSerializerFactory.cs
│ ├── ISchemaRegistryProtobufSerializerBuilder.cs
│ ├── IProtobufDeserializerConfigBuilder.cs
│ ├── SchemaRegistryProtobufSerializerKafkaBuilderExtensions.cs
│ └── IProtobufSerializerConfigBuilder.cs
├── tests
├── Confluent.Kafka.Core.Shared.Tests
│ └── Stubs
│ │ ├── ITestSubject.cs
│ │ ├── TestSubject.cs
│ │ └── TestFunctionalBuilder.cs
└── Confluent.Kafka.Core.Tests
│ ├── Serialization
│ └── Stubs
│ │ ├── protobufMessage.proto
│ │ └── AvroMessage.avsc
│ ├── Extensions
│ ├── ObjectExtensions.cs
│ ├── EnumExtensions.cs
│ └── MockExtensions.cs
│ └── Core
│ ├── Diagnostics
│ └── KafkaActivityListener.cs
│ └── Extensions
│ ├── ActivityExtensions.cs
│ └── KafkaConsumerExtensions.cs
├── Directory.Build.props
├── NuGet.Config
├── docs
├── Usage.md
└── Serialization
│ └── Serialization.md
├── .github
└── workflows
│ ├── build-and-publish.yml
│ └── build-and-tests.yml
└── LICENSE
/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffernandolima/confluent-kafka-core-dotnet/HEAD/README.md
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "omnisharp.organizeImportsOnFormat": true,
3 | "prettyxml.settings.preserveWhiteSpacesInComment": true
4 | }
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Models/Internal/KafkaSenderType.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Models.Internal
2 | {
3 | internal enum KafkaSenderType
4 | {
5 | Consumer,
6 | Hosting
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/tests/Confluent.Kafka.Core.Shared.Tests/Stubs/ITestSubject.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Shared.Tests.Stubs
2 | {
3 | public interface ITestSubject
4 | {
5 | string SomeProperty { get; set; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Models/IMessageValue.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Models
4 | {
5 | public interface IMessageValue
6 | {
7 | Guid Id { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Specifications/ISpecification`.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Specifications
2 | {
3 | public interface ISpecification
4 | {
5 | bool IsSatisfiedBy(T source);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Mapping/Internal/IMapper`.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Mapping.Internal
2 | {
3 | internal interface IMapper
4 | {
5 | TDestination Map(params object[] args);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Conversion/Internal/IOptionsConverter`.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Conversion.Internal
2 | {
3 | internal interface IOptionsConverter
4 | {
5 | TOptions ToOptions();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Shared/SchemaRegistry/IUnregisteredSchemaBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry
2 | {
3 | public interface IUnregisteredSchemaBuilder : ISchemaBuilder
4 | { }
5 | }
6 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Consumer/Internal/IConsumerBuilder``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer.Internal
2 | {
3 | internal interface IConsumerBuilder
4 | {
5 | IConsumer Build();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Models/Internal/KafkaSenderConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Models.Internal
2 | {
3 | internal static class KafkaSenderConstants
4 | {
5 | public const string Sender = "Sender";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Producer/Internal/IProducerBuilder``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer.Internal
2 | {
3 | internal interface IProducerBuilder
4 | {
5 | IProducer Build();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/tests/Confluent.Kafka.Core.Tests/Serialization/Stubs/protobufMessage.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | option csharp_namespace = "Confluent.Kafka.Core.Tests.Serialization";
4 |
5 | message ProtobufMessage {
6 | int32 id = 1;
7 | string content = 2;
8 | }
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Encoding/IEncodingFactory.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Encoding
2 | {
3 | using System.Text;
4 |
5 | public interface IEncodingFactory
6 | {
7 | Encoding CreateDefault();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Consumer/Internal/ConsumeResultConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer.Internal
2 | {
3 | internal static class ConsumeResultConstants
4 | {
5 | public const string ConsumeResult = "ConsumeResult";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Consumer/Internal/IConsumerAccessor``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer.Internal
2 | {
3 | internal interface IConsumerAccessor
4 | {
5 | IConsumer UnderlyingConsumer { get; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Producer/Internal/IProducerAccessor``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer.Internal
2 | {
3 | internal interface IProducerAccessor
4 | {
5 | IProducer UnderlyingProducer { get; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Consumer/Internal/KafkaConsumerHandlerFactoryOptions.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer.Internal
2 | {
3 | internal sealed class KafkaConsumerHandlerFactoryOptions
4 | {
5 | public bool EnableLogging { get; set; } = true;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Idempotency/Internal/KafkaIdempotencyConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Idempotency.Internal
2 | {
3 | internal static class KafkaIdempotencyConstants
4 | {
5 | public const string IdempotencyHandler = "IdempotencyHandler";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Internal/IObjectFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Internal
4 | {
5 | internal interface IObjectFactory
6 | {
7 | object TryCreateInstance(IServiceProvider serviceProvider, Type objectType);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Producer/Internal/KafkaProducerHandlerFactoryOptions.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer.Internal
2 | {
3 | internal sealed class KafkaProducerHandlerFactoryOptions
4 | {
5 | public bool EnableLogging { get; set; } = true;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Retry.Polly/Internal/PollyRetryHandlerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Retry.Polly.Internal
2 | {
3 | internal static class PollyRetryHandlerConstants
4 | {
5 | public const string PollyRetryHandlerKey = "PollyRetryHandler";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.ProtobufNet/ProtobufNetSerializerOptions.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.ProtobufNet
2 | {
3 | public sealed class ProtobufNetSerializerOptions
4 | {
5 | public bool AutomaticRuntimeMap { get; set; } = true;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Hosting/Retry/IKafkaRetryConsumerWorker.cs:
--------------------------------------------------------------------------------
1 | using Confluent.Kafka.Core.Models;
2 |
3 | namespace Confluent.Kafka.Core.Hosting.Retry
4 | {
5 | public interface IKafkaRetryConsumerWorker : IKafkaConsumerWorker
6 | { }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/KafkaSyncProductionEnrichmentContext.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Diagnostics
2 | {
3 | public class KafkaSyncProductionEnrichmentContext : KafkaAsyncProductionEnrichmentContext
4 | {
5 | public Error Error { get; init; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Hosting/Internal/ExecutionResult.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Hosting.Internal
2 | {
3 | internal enum ExecutionResult
4 | {
5 | NoAvailableSlots,
6 | NoAvailableMessages,
7 | Dispatched,
8 | UnhandledException
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.JsonCore/Internal/JsonCoreSerializerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.JsonCore.Internal
2 | {
3 | internal static class JsonCoreSerializerConstants
4 | {
5 | public const string JsonCoreSerializerKey = "JsonCoreSerializer";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Hosting/Internal/MessageOrderGuaranteeConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Hosting.Internal
2 | {
3 | internal static class MessageOrderGuaranteeConstants
4 | {
5 | public const string MessageOrderGuaranteeKeyHandler = "MessageOrderGuaranteeKeyHandler";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Shared/Builders/IFunctionalBuilder``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Internal
2 | {
3 | internal interface IFunctionalBuilder : IFunctionalBuilder
4 | where TSubject : class
5 | where TSelf : IFunctionalBuilder
6 | { }
7 | }
--------------------------------------------------------------------------------
/src/Shared/SchemaRegistry/Internal/SchemaRegistryClientConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry.Internal
2 | {
3 | internal static class SchemaRegistryClientConstants
4 | {
5 | public const string ConfluentSchemaRegistryClientKey = "ConfluentSchemaRegistryClient";
6 | }
7 | }
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Idempotency.Redis/Internal/RedisIdempotencyHandlerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Idempotency.Redis.Internal
2 | {
3 | internal static class RedisIdempotencyHandlerConstants
4 | {
5 | public const string RedisIdempotencyHandlerKey = "RedisIdempotencyHandler";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.ProtobufNet/Internal/ProtobufNetSerializerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.ProtobufNet.Internal
2 | {
3 | internal static class ProtobufNetSerializerConstants
4 | {
5 | public const string ProtobufNetSerializerKey = "ProtobufNetSerializer";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Consumer/IKafkaConsumerInterceptor``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer
2 | {
3 | public interface IKafkaConsumerInterceptor
4 | {
5 | IKafkaConsumerInterceptorContext OnConsume(IKafkaConsumerInterceptorContext context);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Producer/IKafkaProducerInterceptor``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer
2 | {
3 | public interface IKafkaProducerInterceptor
4 | {
5 | IKafkaProducerInterceptorContext OnProduce(IKafkaProducerInterceptorContext context);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/KafkaProcessingFailureEnrichmentContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Diagnostics
4 | {
5 | public class KafkaProcessingFailureEnrichmentContext : KafkaProcessingEnrichmentContext
6 | {
7 | public Exception Exception { get; init; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/KafkaProductionFailureEnrichmentContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Diagnostics
4 | {
5 | public class KafkaProductionFailureEnrichmentContext : KafkaSyncProductionEnrichmentContext
6 | {
7 | public Exception Exception { get; init; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.NewtonsoftJson/Internal/NewtonsoftJsonSerializerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.NewtonsoftJson.Internal
2 | {
3 | internal static class NewtonsoftJsonSerializerConstants
4 | {
5 | public const string NewtonsoftJsonSerializerKey = "NewtonsoftJsonSerializer";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Client/IConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Confluent.Kafka.Core.Client
4 | {
5 | public interface IConfig : IEnumerable>
6 | {
7 | public int CancellationDelayMaxMs { get; }
8 |
9 | public string Get(string key);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Consumer/IKafkaConsumerInterceptorContext``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer
2 | {
3 | public interface IKafkaConsumerInterceptorContext
4 | {
5 | ConsumeResult ConsumeResult { get; }
6 |
7 | IKafkaConsumerConfig ConsumerConfig { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.OpenTelemetry/TracerProviderBuilderExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTelemetry.Trace
2 | {
3 | public static class TracerProviderBuilderExtensions
4 | {
5 | public static TracerProviderBuilder AddKafkaCoreInstrumentation(this TracerProviderBuilder builder)
6 | => builder.AddSource("Confluent.Kafka.Core");
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Producer/Internal/IDeliveryReportFactory.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer.Internal
2 | {
3 | internal interface IDeliveryReportFactory
4 | {
5 | DeliveryReport CreateDefault(
6 | TopicPartition partition,
7 | Message message);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/Confluent.Kafka.Core.Tests/Serialization/Stubs/AvroMessage.avsc:
--------------------------------------------------------------------------------
1 | {
2 | "namespace": "Confluent.Kafka.Core.Tests.Serialization",
3 | "name": "AvroMessage",
4 | "type": "record",
5 | "fields": [
6 | {
7 | "name": "id",
8 | "type": "int"
9 | },
10 | {
11 | "name": "content",
12 | "type": "string"
13 | }
14 | ]
15 | }
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/KafkaProcessingEnrichmentContext.cs:
--------------------------------------------------------------------------------
1 | using Confluent.Kafka.Core.Hosting;
2 |
3 | namespace Confluent.Kafka.Core.Diagnostics
4 | {
5 | public class KafkaProcessingEnrichmentContext : KafkaConsumptionEnrichmentContext
6 | {
7 | public IKafkaConsumerWorkerConfig WorkerConfig { get; init; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Hosting/IConsumeResultErrorHandler``.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 |
4 | namespace Confluent.Kafka.Core.Hosting
5 | {
6 | public interface IConsumeResultErrorHandler
7 | {
8 | Task HandleAsync(ConsumeResult consumeResult, Exception exception);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.SchemaRegistry.Avro/Internal/SchemaRegistryAvroSerializerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry.Avro.Internal
2 | {
3 | internal static class SchemaRegistryAvroSerializerConstants
4 | {
5 | public const string SchemaRegistryAvroSerializerKey = "SchemaRegistryAvroSerializer";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.SchemaRegistry.Json/Internal/SchemaRegistryJsonSerializerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry.Json.Internal
2 | {
3 | internal static class SchemaRegistryJsonSerializerConstants
4 | {
5 | public const string SchemaRegistryJsonSerializerKey = "SchemaRegistryJsonSerializer";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.SchemaRegistry.Json/IJsonSchemaGeneratorSettingsBuilder.cs:
--------------------------------------------------------------------------------
1 | #if !NET8_0_OR_GREATER
2 |
3 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry.Json
4 | {
5 | public interface IJsonSchemaGeneratorSettingsBuilder :
6 | IJsonSchemaGeneratorSettingsBuilder
7 | { }
8 | }
9 |
10 | #endif
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Diagnostics/Internal/OperationNames.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Diagnostics.Internal
2 | {
3 | internal static class OperationNames
4 | {
5 | public const string PublishOperation = "publish";
6 | public const string ReceiveOperation = "receive";
7 | public const string ProcessOperation = "process";
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Threading/Internal/IAsyncLockFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Threading.Internal
4 | {
5 | internal interface IAsyncLockFactory
6 | {
7 | AsyncLock CreateAsyncLock(Action configureOptions);
8 |
9 | AsyncLock CreateAsyncLock(AsyncLockOptions options);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Hosting/IConsumeResultHandler``.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Threading.Tasks;
3 |
4 | namespace Confluent.Kafka.Core.Hosting
5 | {
6 | public interface IConsumeResultHandler
7 | {
8 | Task HandleAsync(ConsumeResult consumeResult, CancellationToken cancellationToken);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Idempotency.Redis/Internal/RedisClientConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Idempotency.Redis.Internal
2 | {
3 | internal static class RedisClientConstants
4 | {
5 | public const string StackExchangeRedisClientKey = "StackExchangeRedisClient";
6 | public const string PreventThreadTheftFeatureFlag = "PreventThreadTheft";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Threading/Internal/IAsyncSemaphore.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Confluent.Kafka.Core.Threading.Internal
6 | {
7 | internal interface IAsyncSemaphore : IDisposable
8 | {
9 | Task WaitAsync(CancellationToken cancellationToken);
10 |
11 | void Release();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/KafkaConsumptionFailureEnrichmentContext.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Diagnostics
4 | {
5 | public class KafkaConsumptionFailureEnrichmentContext : KafkaConsumptionEnrichmentContext
6 | {
7 | public Error Error { get; init; }
8 | public Exception Exception { get; init; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.SchemaRegistry.Protobuf/Internal/SchemaRegistryProtobufSerializerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry.Protobuf.Internal
2 | {
3 | internal static class SchemaRegistryProtobufSerializerConstants
4 | {
5 | public const string SchemaRegistryProtobufSerializerKey = "SchemaRegistryProtobufSerializer";
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/IPropagationContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Diagnostics;
3 |
4 | namespace Confluent.Kafka.Core.Diagnostics
5 | {
6 | public interface IPropagationContext
7 | {
8 | ActivityContext ActivityContext { get; }
9 |
10 | IEnumerable> Baggage { get; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Producer/IKafkaProducerInterceptorContext``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer
2 | {
3 | public interface IKafkaProducerInterceptorContext
4 | {
5 | TopicPartition TopicPartition { get; }
6 |
7 | Message Message { get; }
8 |
9 | IKafkaProducerConfig ProducerConfig { get; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Producer/Internal/KafkaProducerConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer.Internal
2 | {
3 | internal static class KafkaProducerConstants
4 | {
5 | public const string RetryProducer = "RetryProducer";
6 | public const string DeadLetterProducer = "DeadLetterProducer";
7 | public const string DeadLetterTopicSuffix = ".DeadLetter";
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Consumer/IKafkaConsumerHandlerFactoryOptionsBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer
2 | {
3 | public interface IKafkaConsumerHandlerFactoryOptionsBuilder
4 | {
5 | IKafkaConsumerHandlerFactoryOptionsBuilder FromConfiguration(string sectionKey);
6 |
7 | IKafkaConsumerHandlerFactoryOptionsBuilder WithEnableLogging(bool enableLogging);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Consumer/Internal/KafkaConsumerInterceptorContext``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Consumer.Internal
2 | {
3 | internal sealed class KafkaConsumerInterceptorContext : IKafkaConsumerInterceptorContext
4 | {
5 | public ConsumeResult ConsumeResult { get; init; }
6 | public IKafkaConsumerConfig ConsumerConfig { get; init; }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Shared/Builders/IFunctionalBuilder```.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Internal
4 | {
5 | internal interface IFunctionalBuilder : IDisposable
6 | where TSubject : class, TSubjectAbs
7 | where TSelf : IFunctionalBuilder
8 | {
9 | TSelf Clear();
10 | TSubjectAbs Build();
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Serialization.ProtobufNet/IProtobufNetSerializerOptionsBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.ProtobufNet
2 | {
3 | public interface IProtobufNetSerializerOptionsBuilder
4 | {
5 | IProtobufNetSerializerOptionsBuilder FromConfiguration(string sectionKey);
6 |
7 | IProtobufNetSerializerOptionsBuilder WithAutomaticRuntimeMap(bool automaticRuntimeMap);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/Confluent.Kafka.Core.Shared.Tests/Stubs/TestSubject.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Shared.Tests.Stubs
2 | {
3 | public class TestSubject : ITestSubject
4 | {
5 | public string SomeProperty { get; set; }
6 |
7 | public TestSubject()
8 | { }
9 |
10 | public TestSubject(string someProperty)
11 | {
12 | SomeProperty = someProperty;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Producer/IKafkaProducerHandlerFactoryOptionsBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer
2 | {
3 | public interface IKafkaProducerHandlerFactoryOptionsBuilder
4 | {
5 | IKafkaProducerHandlerFactoryOptionsBuilder FromConfiguration(string sectionKey);
6 |
7 | IKafkaProducerHandlerFactoryOptionsBuilder WithEnableLogging(bool enableLogging);
8 | }
9 | }
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/Confluent.Kafka.Core.Tests/Extensions/ObjectExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Tests.Extensions
2 | {
3 | public static class ObjectExtensions
4 | {
5 | public static TImplementation ToImplementation(
6 | this object service)
7 | {
8 | var implementation = (TImplementation)service;
9 |
10 | return implementation;
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Diagnostics/IContextPropagator.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Diagnostics;
3 |
4 | namespace Confluent.Kafka.Core.Diagnostics
5 | {
6 | public interface IContextPropagator
7 | {
8 | void InjectContext(Activity activity, IDictionary carrier);
9 |
10 | IPropagationContext ExtractContext(IDictionary carrier);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Models/Internal/KafkaSender.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Models.Internal
2 | {
3 | internal sealed class KafkaSender
4 | {
5 | public object Instance { get; }
6 | public KafkaSenderType Type { get; }
7 |
8 | public KafkaSender(object instance, KafkaSenderType type)
9 | {
10 | Instance = instance;
11 | Type = type;
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Retry/Internal/KafkaRetryConstants.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Retry.Internal
2 | {
3 | internal static class KafkaRetryConstants
4 | {
5 | public const string RetryHandler = "RetryHandler";
6 | public const string RetryCountKey = "X-Retry-Count";
7 | public const string RetryGroupIdKey = "X-Retry-Group-Id";
8 | public const string RetryTopicSuffix = ".Retry";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Shared/SchemaRegistry/ISchemaBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry
4 | {
5 | public interface ISchemaBuilder
6 | {
7 | ISchemaBuilder WithRegisteredSchema(
8 | Action configureRegisteredSchema);
9 |
10 | ISchemaBuilder WithUnregisteredSchema(
11 | Action configureUnregisteredSchema);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Producer/Internal/KafkaProducerInterceptorContext``.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Producer.Internal
2 | {
3 | internal sealed class KafkaProducerInterceptorContext : IKafkaProducerInterceptorContext
4 | {
5 | public TopicPartition TopicPartition { get; init; }
6 | public Message Message { get; init; }
7 | public IKafkaProducerConfig ProducerConfig { get; init; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Idempotency/IIdempotencyHandler``.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Confluent.Kafka.Core.Idempotency
6 | {
7 | public interface IIdempotencyHandler : IDisposable
8 | {
9 | Task StartAsync(CancellationToken cancellationToken = default);
10 |
11 | Task TryHandleAsync(TValue messageValue, CancellationToken cancellationToken = default);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Shared/SchemaRegistry/IRegisteredSchemaBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace Confluent.Kafka.Core.Serialization.SchemaRegistry
2 | {
3 | public interface IRegisteredSchemaBuilder : ISchemaBuilder
4 | {
5 | IRegisteredSchemaBuilder WithSubject(string subject);
6 |
7 | IRegisteredSchemaBuilder WithVersion(int version);
8 |
9 | IRegisteredSchemaBuilder WithId(int id);
10 |
11 | IRegisteredSchemaBuilder WithGuid(string guid);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Hosting/IKafkaConsumerWorker``.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Confluent.Kafka.Core.Hosting
6 | {
7 | public interface IKafkaConsumerWorker : IDisposable
8 | {
9 | Task StartAsync(CancellationToken cancellationToken);
10 |
11 | Task StopAsync(CancellationToken cancellationToken);
12 |
13 | Task ExecuteAsync(CancellationToken stoppingToken);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Diagnostics/Internal/KafkaActivitySource.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace Confluent.Kafka.Core.Diagnostics.Internal
4 | {
5 | internal sealed class KafkaActivitySource : ActivitySourceBase
6 | {
7 | private static readonly AssemblyName AssemblyName = typeof(KafkaActivitySource).Assembly.GetName();
8 |
9 | public KafkaActivitySource()
10 | : base(AssemblyName.Name, AssemblyName.Version!.ToString())
11 | { }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Threading/Internal/IAsyncLockOptionsBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Threading.Internal
4 | {
5 | internal interface IAsyncLockOptionsBuilder
6 | {
7 | IAsyncLockOptionsBuilder WithMaxDegreeOfParallelism(int maxDegreeOfParallelism);
8 |
9 | IAsyncLockOptionsBuilder WithHandleLockByKey(bool handleLockByKey);
10 |
11 | IAsyncLockOptionsBuilder WithLockKeyHandler(Func lockKeyHandler);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/docs/Usage.md:
--------------------------------------------------------------------------------
1 | | [Main](/README.md) > Usage |
2 | |----------------------------|
3 |
4 | ### Usage :wrench:
5 |
6 | - [Producers/Consumers](/docs/Core/PubSub.md)
7 | - [Workers](/docs/Core/Workers.md)
8 | - [Serialization](/docs/Serialization/Serialization.md)
9 | - [Blocking Retry](/docs/Retry/PollyBlockingRetry.md)
10 | - [Idempotency](/docs/Idempotency/RedisIdempotency.md)
11 | - [Distributed Tracing and OpenTelemetry](/docs/OpenTelemetry/OpenTelemetry.md)
12 |
13 | | [Go Back](/README.md) |
14 | |-----------------------|
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Hosting/IKafkaConsumerLifecycleWorker``.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 | using System.Threading.Tasks;
3 |
4 | namespace Confluent.Kafka.Core.Hosting
5 | {
6 | public interface IKafkaConsumerLifecycleWorker
7 | {
8 | Task StartAsync(IKafkaConsumerWorkerOptions options, CancellationToken cancellationToken);
9 |
10 | Task StopAsync(IKafkaConsumerWorkerOptions options, CancellationToken cancellationToken);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Models/Internal/MessageValueExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Models.Internal
4 | {
5 | internal static class MessageValueExtensions
6 | {
7 | public static Guid? GetId(this IMessageValue messageValue)
8 | {
9 | var messageId = messageValue is not null && messageValue.Id != Guid.Empty
10 | ? new Guid?(messageValue.Id)
11 | : null;
12 |
13 | return messageId;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Client/IConfigBuilder`.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Confluent.Kafka.Core.Client
4 | {
5 | public interface IConfigBuilder where TBuilder : IConfigBuilder
6 | {
7 | TBuilder WithCancellationDelayMaxMs(int cancellationDelayMaxMs);
8 |
9 | TBuilder WithConfigProperty(KeyValuePair configProperty);
10 |
11 | TBuilder WithConfigProperty(string configPropertyKey, string configPropertyValue);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core.Abstractions/Producer/IKafkaProducerHandlerFactory``.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Confluent.Kafka.Core.Producer
4 | {
5 | public interface IKafkaProducerHandlerFactory
6 | {
7 | Action, string> CreateStatisticsHandler();
8 |
9 | Action, Error> CreateErrorHandler();
10 |
11 | Action, LogMessage> CreateLogHandler();
12 |
13 | Func CreateMessageIdHandler();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Confluent.Kafka.Core/Threading/Internal/AsyncLockContext.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Confluent.Kafka.Core.Threading.Internal
4 | {
5 | internal sealed class AsyncLockContext
6 | {
7 | public static readonly AsyncLockContext Empty = new();
8 |
9 | public IDictionary