Skip to content

Commit 2013abd

Browse files
authored
Add Cluster.Sharding journal migration adapter convernience method (#226)
* Add Cluster.Sharding journal migration adapter convernience method * Update API Verify list
1 parent 93d3ed1 commit 2013abd

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/Akka.Hosting.API.Tests/verify/CoreApiSpec.ApprovePersistence.verified.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ namespace Akka.Persistence.Hosting
33
{
44
public static class AkkaPersistenceHostingExtensions
55
{
6+
public static Akka.Hosting.AkkaConfigurationBuilder WithClusterShardingJournalMigrationAdapter(this Akka.Hosting.AkkaConfigurationBuilder builder, Akka.Persistence.Hosting.JournalOptions journalOptions) { }
7+
public static Akka.Hosting.AkkaConfigurationBuilder WithClusterShardingJournalMigrationAdapter(this Akka.Hosting.AkkaConfigurationBuilder builder, string journalId) { }
68
public static Akka.Hosting.AkkaConfigurationBuilder WithInMemoryJournal(this Akka.Hosting.AkkaConfigurationBuilder builder) { }
79
public static Akka.Hosting.AkkaConfigurationBuilder WithInMemoryJournal(this Akka.Hosting.AkkaConfigurationBuilder builder, System.Action<Akka.Persistence.Hosting.AkkaPersistenceJournalBuilder> journalBuilder, string journalId = "inmem", bool isDefaultPlugin = true) { }
810
public static Akka.Hosting.AkkaConfigurationBuilder WithInMemorySnapshotStore(this Akka.Hosting.AkkaConfigurationBuilder builder, string snapshotStoreId = "inmem", bool isDefaultPlugin = true) { }

src/Akka.Persistence.Hosting/AkkaPersistenceHostingExtensions.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,5 +251,39 @@ class = ""Akka.Persistence.Snapshot.MemorySnapshotStore, Akka.Persistence""
251251

252252
return builder.AddHocon(liveConfig, HoconAddMode.Prepend);
253253
}
254+
255+
/// <summary>
256+
/// Adds the Akka.NET v1.4 to v1.5 Akka.Cluster.Sharding persistence event migration adapter to a journal.
257+
/// </summary>
258+
/// <param name="builder">The builder instance being configured.</param>
259+
/// <param name="journalOptions">The specific journal options instance used by Akka.Cluster.Sharding persistence. For example, an instance of <c>SqlServerJournalOptions</c></param>
260+
/// <returns>The same <see cref="AkkaConfigurationBuilder"/> instance originally passed in.</returns>
261+
public static AkkaConfigurationBuilder WithClusterShardingJournalMigrationAdapter(
262+
this AkkaConfigurationBuilder builder,
263+
JournalOptions journalOptions)
264+
=> builder.WithClusterShardingJournalMigrationAdapter(journalOptions.PluginId);
265+
266+
/// <summary>
267+
/// Adds the Akka.NET v1.4 to v1.5 Akka.Cluster.Sharding persistence event migration adapter to a journal.
268+
/// </summary>
269+
/// <param name="builder">The builder instance being configured.</param>
270+
/// <param name="journalId">The specific journal identifier used by Akka.Cluster.Sharding persistence. For example, "akka.persistence.journal.sql-server"</param>
271+
/// <returns>The same <see cref="AkkaConfigurationBuilder"/> instance originally passed in.</returns>
272+
public static AkkaConfigurationBuilder WithClusterShardingJournalMigrationAdapter(
273+
this AkkaConfigurationBuilder builder,
274+
string journalId)
275+
{
276+
var config = @$"{journalId} {{
277+
event-adapters {{
278+
coordinator-migration = ""Akka.Cluster.Sharding.OldCoordinatorStateMigrationEventAdapter, Akka.Cluster.Sharding""
279+
}}
280+
281+
event-adapter-bindings {{
282+
""Akka.Cluster.Sharding.ShardCoordinator+IDomainEvent, Akka.Cluster.Sharding"" = coordinator-migration
283+
}}
284+
}}";
285+
return builder.AddHocon(config, HoconAddMode.Prepend);
286+
}
287+
254288
}
255289
}

0 commit comments

Comments
 (0)