Epam.Kafka.PubSub.EntityFrameworkCore
2.0.36
Prefix Reserved
dotnet add package Epam.Kafka.PubSub.EntityFrameworkCore --version 2.0.36
NuGet\Install-Package Epam.Kafka.PubSub.EntityFrameworkCore -Version 2.0.36
<PackageReference Include="Epam.Kafka.PubSub.EntityFrameworkCore" Version="2.0.36" />
paket add Epam.Kafka.PubSub.EntityFrameworkCore --version 2.0.36
#r "nuget: Epam.Kafka.PubSub.EntityFrameworkCore, 2.0.36"
// Install Epam.Kafka.PubSub.EntityFrameworkCore as a Cake Addin
#addin nuget:?package=Epam.Kafka.PubSub.EntityFrameworkCore&version=2.0.36
// Install Epam.Kafka.PubSub.EntityFrameworkCore as a Cake Tool
#tool nuget:?package=Epam.Kafka.PubSub.EntityFrameworkCore&version=2.0.36
Epam.Kafka.PubSub.EntityFrameworkCore
About
Epam.Kafka.PubSub.EntityFrameworkCore package provides entity framework core implementation for key abstractions defined in Epam.Kafka.PubSub.
Key Features
- Base abstract classes
DbContextSubscriptionHandler<TKey, TValue, TContext>
,DbContextEntitySubscriptionHandler<TKey, TValue, TContext TEntity>
to help with implementation ofISubscriptionHandler<TKey, TValue>
that read data from KAFKA topics and save it to database usingDbContext
. - Default implementation of
IExternalOffsetsStorage
that store offsets in database viaDbContext
.TryAddKafkaDbContextState
extension method to register it inIServiceCollection
. - Base abstract classes
DbContextPublicationHandler<TKey, TValue, TEntity, TContext>
andDbContextEntityPublicationHandler<TKey, TValue, TEntity, TContext>
to help with implementation ofIPublicationHandler<TKey, TValue>
that read data from database usingDbContext
and publish it to kafka topics.
How to Use
Store subscription offsets
Prepare context.
public class SampleDbContext : DbContext, IKafkaStateDbContext
{
public DbSet<KafkaTopicState> KafkaTopicStates => this.Set<KafkaTopicState>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.AddKafkaState();
}
}
Register services and setup topic partition assignment and offsets storage for subscription.
services.TryAddKafkaDbContextState<SampleDbContext>();
KafkaBuilder kafkaBuilder = services.AddKafka();
kafkaBuilder.AddSubscription<string, KafkaEntity, SubscriptionHandlerSample>("Sample")
.WithSubscribeAndExternalOffsets();
Publish data from database to kafka
Optionally derive entity from IKafkaPublicationEntity
interface to use default state management.
public class SamplePublicationEntity : IKafkaPublicationEntity
{
public KafkaPublicationState KafkaPubState { get; set; }
public DateTime KafkaPubNbf { get; set; }
}
Create publication handler derived from DbContextEntityPublicationHandler<TKey, TValue, TEntity, TContext>
for entity with default state management or from DbContextPublicationHandler<TKey, TValue, TEntity, TContext>
for custom state management.
Setup publication
KafkaBuilder kafkaBuilder = services.AddKafka();
kafkaBuilder.AddPublication<string, KafkaEntity, SamplePublicationHandler>("Sample");
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Epam.Kafka.PubSub (>= 2.0.36)
- Microsoft.EntityFrameworkCore (>= 3.1.32)
-
net6.0
- Epam.Kafka.PubSub (>= 2.0.36)
- Microsoft.EntityFrameworkCore (>= 6.0.0)
-
net8.0
- Epam.Kafka.PubSub (>= 2.0.36)
- Microsoft.EntityFrameworkCore (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.