- Bump Akka.NET version from 1.4.40 to 1.4.43
- Bump Akka.Persistence.Hosting from 0.4.2 to 0.4.3
- Bump Azure.Identity from 1.6.1 to 1.7.0
- Clean up all async operations during actor stop
- Refactor
DefaultAzureCredential
toTokenCredential
- Chunk batch transactions to 100 item chunk batches
- Bump Akka.NET version from 1.4.39 to 1.4.40
- Bump Akka.Persistence.Hosting version from 0.4.1 to 0.4.2
- Bump Azure.Storage.Blobs version from 12.12.0 to 12.13.1
- Bump Azure.Identity version from 1.6.0 to 1.6.1
- Added programmatic Setup classes
- Update Akka.Hosting support to support
DefaultAzureCredential
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();
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
- Upgraded to Akka.NET 1.4.39
- Update Azure.Identity to 1.6.0
- Update System.Linq.Async to 6.0.1
- Upgrade
Microsoft.Azure.Consmos.Table
toAzure.Data.Tables
12.5.0
Release of Akka.Persistence.Azure