Skip to content

Akka.Persistence.Azure v1.5.17.1

Compare
Choose a tag to compare
@Aaronontheweb Aaronontheweb released this 04 Mar 20:29
c780087

1.5.17.1 March 4 2024

1.5.13 October 6 2023

1.5.1 March 16 2023

Multi Journal Support

You can now add more than one Akka.Persistence.Azure settings and use them singularly for different Akka plugins.

In the example below, we set up two separate journal options with two distinct identifier, one is being used as default persistence plugin, and the other are being used as the journal for cluster sharding.

var persistenceJournal = new AzureTableStorageJournalOptions(true)
{
    Identifier = "azure-journal",
    ConnectionString = connectionString
};
var shardJournal = new AzureTableStorageJournalOptions(false)
{
    Identifier = "azure-shard-journal",
    ConnectionString = shardConnectionString
};
builder
    .WithClustering()
    .WithAzureTableJournal(persistenceJournal)
    .WithAzureTableJournal(shardJournal)
    .WithAzureBlobsSnapshotStore(new AzureBlobSnapshotOptions
    {
        ConnectionString = connectionString
    })
    .WithShardRegion<ShardRegionKey>(
        "region-1",
        Customer.Props,
        new MessageExtractor(10),
        new ShardOptions
        {
            JournalOptions = shardJournal,
            StateStoreMode = StateStoreMode.Persistence
        });

1.5.0 March 02 2023

0.9.2 September 27 2022

0.9.1 August 29 2022

New Setup classes are added to allow programmatic setup of the journal table and snapshot-store blog storage; these setup classes supports DefaultAzureCredential. Note that to use DefaultAzureCredential from the Azure.Identity package, you need to provide both service URI and credential.

var host = new HostBuilder()
    .ConfigureServices(collection =>
    {
        collection.AddAkka("MyActorSys", builder =>
        {
            var credentials = new DefaultAzureCredential();
            
            // Programatically setup the journal table
            builder.WithAzureTableJournal(setup => {
                setup.TableName = "myazuretable";
                setup.ServiceUri = new Uri("https://{account_name}.table.core.windows.net");
                setup.DefaultAzureCredential = credentials;
                // Optional TableClientOptions
                setup.TableClientOptions = new TableClientOptions(); 
            });
            
            // Programatically setup the snapshot-store blob container
            builder.WithAzureBlobsSnapshotStore(setup => {
                setup.ContainerName = "myAzureBlobContainer";
                setup.ServiceUri = new Uri("https://{account_name}.blob.core.windows.net");
                setup.DefaultAzureCredential = credentials;
                // Optional BlobClientOptions
                setup.BlobClientOptions = new BlobClientOptions(); 
            });
            
            builder.StartActors((system, registry) =>
            {
                var myActor = system.ActorOf(Props.Create(() => new MyPersistenceActor("ac1")), "actor1");
                registry.Register<MyPersistenceActor>(myActor);
            });
        });
    }).Build();

A few convenience Akka.Hosting extension methods are also added as a shortcut:

var host = new HostBuilder()
    .ConfigureServices(collection =>
    {
        collection.AddAkka("MyActorSys", builder =>
        {
            var credentials = new DefaultAzureCredential();
            
            // Add the journal table
            builder.WithAzureTableJournal(
                serviceUri: new Uri("https://{account_name}.table.core.windows.net"),
                defaultAzureCredential: credentials);
            
            // Add the snapshot-store blob container
            builder.WithAzureBlobsSnapshotStore(
                serviceUri: new Uri("https://{account_name}.blob.core.windows.net"),
                defaultAzureCredential: credentials);
            
            builder.StartActors((system, registry) =>
            {
                var myActor = system.ActorOf(Props.Create(() => new MyPersistenceActor("ac1")), "actor1");
                registry.Register<MyPersistenceActor>(myActor);
            });
        });
    }).Build();

0.9.0 July 21 2022

Added Akka.Hosting support to Akka.Persistence.Azure, which you can activate via the following:

First, install the Akka.Persistence.Azure.Hosting NuGet package:

PS> install-package Akka.Persistence.Azure.Hosting

Next, add the WithAzurePersistence method calls to your AkkaConfigurationBuilder (from Akka.Hosting):

var conn = Environment.GetEnvironmentVariable("AZURE_CONNECTION_STR");
var host = new HostBuilder()
    .ConfigureServices(collection =>
    {
        collection.AddAkka("MyActorSys", builder =>
        {
        	// enables both journal and snapshot store
            builder.WithAzurePersistence(conn);
            builder.StartActors((system, registry) =>
            {
                var myActor = system.ActorOf(Props.Create(() => new MyPersistenceActor("ac1")), "actor1");
                registry.Register<MyPersistenceActor>(myActor);
            });
        });
    }).Build();

await host.StartAsync();
return host;

You can also call the following methods to activate the journal / snapshot stores independently:

  • WithAzureTableJournal
  • WithAzureBlobsSnapshotStore

0.8.4 June 2 2022

0.8.3 September 9 2021

0.8.2 April 20 2021

Release of Akka.Persistence.Azure

Changes:

  • c780087 Update RELEASE_NOTES.md for 1.5.17.1 (#380)
  • c463566 Bump Microsoft.SourceLink.GitHub from 1.1.1 to 8.0.0 (#360)
  • 697fe32 Bump Microsoft.NET.Test.Sdk from 17.8.0 to 17.9.0 (#370)
  • 6ba8686 Bump AkkaVersion from 1.5.16 to 1.5.17.1 (#375)
  • ced20db Fix sharding unit test, extend wait time (#379)
  • 4967251 Bump AkkaHostingVersion from 1.5.15 to 1.5.17.1 (#376)
  • 60c2165 Bump Azure.Storage.Blobs to 12.19.1 (#377)
  • f19a979 Bump xunit from 2.6.6 to 2.7.0 (#371)
  • 541c14d Bump xunit.runner.visualstudio from 2.5.3 to 2.5.7 (#372)
  • efe404b Bump Azure.Data.Tables from 12.8.1 to 12.8.3 (#369)
See More

This list of changes was auto generated.