From 3d03db8cffc2bfa3055797548d05149ee9c2f943 Mon Sep 17 00:00:00 2001 From: Aaron Stannard Date: Tue, 30 Apr 2024 14:48:49 -0500 Subject: [PATCH] add default Akka.Persistence config to journal --- .../AkkaPersistenceHostingExtensions.cs | 42 +++++++++---------- src/Directory.Build.props | 5 +-- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/Akka.Persistence.Hosting/AkkaPersistenceHostingExtensions.cs b/src/Akka.Persistence.Hosting/AkkaPersistenceHostingExtensions.cs index 2a218180..c045f06a 100644 --- a/src/Akka.Persistence.Hosting/AkkaPersistenceHostingExtensions.cs +++ b/src/Akka.Persistence.Hosting/AkkaPersistenceHostingExtensions.cs @@ -27,7 +27,7 @@ public enum PersistenceMode /// SnapshotStore, } - + /// /// Used to help build journal configurations /// @@ -59,7 +59,7 @@ public AkkaPersistenceJournalBuilder AddReadEventAdapter(string eventA return this; } - + public AkkaPersistenceJournalBuilder AddWriteEventAdapter(string eventAdapterName, IEnumerable boundTypes) where TAdapter : IWriteEventAdapter { @@ -67,7 +67,7 @@ public AkkaPersistenceJournalBuilder AddWriteEventAdapter(string event return this; } - + private void AddAdapter(string eventAdapterName, IEnumerable boundTypes) { Adapters[eventAdapterName] = typeof(TAdapter); @@ -95,7 +95,8 @@ internal void Build() adapters.AppendLine("}"); - var finalHocon = ConfigurationFactory.ParseString(adapters.ToString()); + var finalHocon = ConfigurationFactory.ParseString(adapters.ToString()) + .WithFallback(Persistence.DefaultConfig()); // add the default config as a fallback Builder.AddHocon(finalHocon, HoconAddMode.Prepend); } @@ -104,7 +105,7 @@ internal void AppendAdapters(StringBuilder sb) // useless configuration - don't bother. if (Adapters.Count == 0 || Bindings.Count == 0) return; - + sb.AppendLine("event-adapters {"); foreach (var kv in Adapters) { @@ -136,25 +137,25 @@ public static class AkkaPersistenceHostingExtensions /// public static AkkaConfigurationBuilder WithJournalAndSnapshot( this AkkaConfigurationBuilder builder, - JournalOptions journalOptions, + JournalOptions journalOptions, SnapshotOptions snapshotOptions) { if (journalOptions is null) throw new ArgumentNullException(nameof(journalOptions)); if (snapshotOptions is null) throw new ArgumentNullException(nameof(snapshotOptions)); - + builder.AddHocon(journalOptions.ToConfig(), HoconAddMode.Prepend); var defaultConfig = journalOptions.DefaultConfig; builder.AddHocon(snapshotOptions.ToConfig(), HoconAddMode.Prepend); defaultConfig = defaultConfig.Equals(snapshotOptions.DefaultConfig) - ? defaultConfig - : defaultConfig.WithFallback(snapshotOptions.DefaultConfig); + ? defaultConfig + : defaultConfig.WithFallback(snapshotOptions.DefaultConfig); return builder.AddHocon(defaultConfig, HoconAddMode.Append); } - + /// /// A generic way to add journal configuration to the /// @@ -168,11 +169,11 @@ public static AkkaConfigurationBuilder WithJournal( { if (journalOptions is null) throw new ArgumentNullException(nameof(journalOptions)); - + builder.AddHocon(journalOptions.ToConfig(), HoconAddMode.Prepend); return builder.AddHocon(journalOptions.DefaultConfig, HoconAddMode.Append); } - + /// /// A generic way to add snapshot store configuration to the /// @@ -186,11 +187,11 @@ public static AkkaConfigurationBuilder WithSnapshot( { if (snapshotOptions is null) throw new ArgumentNullException(nameof(snapshotOptions)); - + builder.AddHocon(snapshotOptions.ToConfig(), HoconAddMode.Prepend); return builder.AddHocon(snapshotOptions.DefaultConfig, HoconAddMode.Append); } - + /// /// Used to configure a specific Akka.Persistence.Journal instance, primarily to support s. /// @@ -203,7 +204,7 @@ public static AkkaConfigurationBuilder WithSnapshot( /// public static AkkaConfigurationBuilder WithJournal( this AkkaConfigurationBuilder builder, - string journalId, + string journalId, Action journalBuilder) { var jBuilder = new AkkaPersistenceJournalBuilder(journalId, builder); @@ -213,7 +214,7 @@ public static AkkaConfigurationBuilder WithJournal( jBuilder.Build(); return builder; } - + public static AkkaConfigurationBuilder WithInMemoryJournal(this AkkaConfigurationBuilder builder) { return WithInMemoryJournal(builder, _ => { }); @@ -227,8 +228,8 @@ public static AkkaConfigurationBuilder WithInMemoryJournal( { builder.WithJournal(journalId, journalBuilder); - var liveConfig = -@$"{(isDefaultPlugin ? $"akka.persistence.journal.plugin = akka.persistence.journal.{journalId}" : "")} + var liveConfig = + @$"{(isDefaultPlugin ? $"akka.persistence.journal.plugin = akka.persistence.journal.{journalId}" : "")} akka.persistence.journal.{journalId} {{ class = ""Akka.Persistence.Journal.MemoryJournal, Akka.Persistence"" plugin-dispatcher = ""akka.actor.default-dispatcher"" @@ -242,8 +243,8 @@ public static AkkaConfigurationBuilder WithInMemorySnapshotStore( string snapshotStoreId = "inmem", bool isDefaultPlugin = true) { - var liveConfig = -$@"{(isDefaultPlugin ? $"akka.persistence.snapshot-store.plugin = akka.persistence.snapshot-store.{snapshotStoreId}" : "")} + var liveConfig = + $@"{(isDefaultPlugin ? $"akka.persistence.snapshot-store.plugin = akka.persistence.snapshot-store.{snapshotStoreId}" : "")} akka.persistence.snapshot-store.{snapshotStoreId} {{ class = ""Akka.Persistence.Snapshot.MemorySnapshotStore, Akka.Persistence"" plugin-dispatcher = ""akka.actor.default-dispatcher"" @@ -284,6 +285,5 @@ public static AkkaConfigurationBuilder WithClusterShardingJournalMigrationAdapte }}"; return builder.AddHocon(config, HoconAddMode.Prepend); } - } } \ No newline at end of file diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 990b762b..268cc2df 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,9 +2,8 @@ Copyright © 2013-2023 Akka.NET Team Akka.NET Team - 1.5.15 - • [Update Akka.NET to 1.5.15](https://github.com/akkadotnet/akka.net/releases/tag/1.5.15) -• Marked all Akka.Cluster.Hosting methods that accept deprecated sharding delegates as Obsolete + 1.5.19 + • [Update Akka.NET to 1.5.19](https://github.com/akkadotnet/akka.net/releases/tag/1.5.19) akkalogo.png https://github.com/akkadotnet/Akka.Hosting