Hafslund.Akka.Persistence.Bigtable 0.0.1

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Hafslund.Akka.Persistence.Bigtable --version 0.0.1
NuGet\Install-Package Hafslund.Akka.Persistence.Bigtable -Version 0.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Hafslund.Akka.Persistence.Bigtable" Version="0.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Hafslund.Akka.Persistence.Bigtable --version 0.0.1
#r "nuget: Hafslund.Akka.Persistence.Bigtable, 0.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Hafslund.Akka.Persistence.Bigtable as a Cake Addin
#addin nuget:?package=Hafslund.Akka.Persistence.Bigtable&version=0.0.1

// Install Hafslund.Akka.Persistence.Bigtable as a Cake Tool
#tool nuget:?package=Hafslund.Akka.Persistence.Bigtable&version=0.0.1

Hafslund.Akka.Persistence.Bigtable

Installation

This plugin is released publicly to nuget.org, and the latest released version can be installed by:

dotnet add package Hafslund.Akka.Persistence.Bigtable

To use the plugin as an extension, add the following line of code to the Akka system initialization:

BigtablePersistence.Get(actorSystem);

(Note that this is similar to how the Cluster extension is set up, e.g. Cluster.Get(actorSystem)).

If it is preferred to load the extension from config instead of through code, specify the FQCNs for the Journal and Snasphot store classes in HOCON:

akka.persistence.journal.bigtable.class = "Hafslund.Akka.Persistence.Bigtable.Snapshot.BigtableJournal, Hafslund.Akka.Persistence.Bigtable"
akka.persistence.snapshot-store.bigtable.class = "Hafslund.Akka.Persistence.Bigtable.Snapshot.BigtableSnapshotStore, Hafslund.Akka.Persistence.Bigtable"

Setup

The extension will load default configuration (see reference.conf from plugin source code), but as a minimum, the tablename has to be specified. There is no option to feed in a connection string for the table, as this is not how the Google Cloud SDK is set up to authenticate, see https://cloud.google.com/bigtable/docs/reference/libraries.

To activate the journal plugin, add the following lines to your actor system configuration file:

akka.persistence.journal.plugin = "akka.persistence.journal.bigtable"
akka.persistence.journal.bigtable.table-name = "your/bigtable/table/reference"

Similar configuration may be used to setup a Bigtable snapshot store:

akka.persistence.snapshot-store.plugin = "akka.persistence.snapshot.bigtable"
akka.persistence.snapshot-store.bigtable.table-name = "your/bigtable/table/reference"

Note that the tables with column family must be created before running this plugin, as there is no auto-initialize configuration setting provided (this option would require a different authorization level with create access to Bigtable, than what it is recommended that the akka system should run under). For a brief introduction on how to create tables and column families, see https://cloud.google.com/bigtable/docs/quickstart-cbt.

For a working CBT installation setup with a ~/.cbtrc file pointing to the right project and instance, the following set of commands gives an example:

cbt createtable MyJournalEvents
cbt createfamily MyJournalEvents f
cbt createtable MySnapshotStore
cbt createfamily MySnapshotStore f

Note that the family name f is the default configuration in the plugin if not otherwise specified. If the table is not created with a column family matching the configuration, nothing will be persisted. To override the default column family name in config, set the following HOCON config property:

akka.persistence.journal.bigtable.family-name = otherfamily
akka.persistence.snapshot-store.bigtable.family-name = otherfamily

Sharding Setup

By default, sharding events and snapshots will be persisted by the same plugin by just specifying this in the sharding config:

akka.cluster.sharding {
	journal-plugin-id = "akka.persistence.journal.bigtable"
	snapshot-plugin-id = "akka.persistence.snapshot-store.bigtable"
	state-store-mode = persistence
}

If you want to instantiate a different instance for sharding events and snapshots (mainly if you would like to store these to separate tables), add the following line in code:

ShardingBigtablePersistence.Get(actorSystem);

If it is preferred to load the extension from config instead of through code, specify the FQCNs for the Journal and Snapshot steore classes specific for sharding in HOCON:

akka.persistence.journal.bigtable.class = "Hafslund.Akka.Persistence.Bigtable.Journal.ShardingBigtableJournal, Hafslund.Akka.Persistence.Bigtable"
akka.persistence.snapshot-store.bigtable.class = "Hafslund.Akka.Persistence.Bigtable.Snapshot.ShardingBigtableSnapshotStore, Hafslund.Akka.Persistence.Bigtable"

Then make sure the following changes to your HOCON:

akka.cluster.sharding {
	journal-plugin-id = "akka.persistence.journal.bigtable-sharding"
	snapshot-plugin-id = "akka.persistence.snapshot-store.bigtable-sharding"
	state-store-mode = persistence
}

akka.persistence.journal.bigtable-sharding.table-name = "your/bigtable-sharding/table/reference/"
akka.persistence.snapshot-store.bigtable-sharding.table-name = "your/bigtable-sharding/table/reference"

If you are using a column family name other than the default f, remember to also set the following:

akka.persistence.journal.bigtable-sharding.family-name = otherfamily
akka.persistence.snapshot-store.bigtable-sharding.family-name = otherfamily

Configuration

Both journal and snapshot store share the same configuration keys (however they resides in separate scopes, so they are definied distinctly for either journal or snapshot store). Full configuration is given below (but note that minimal configuration is described above, and is mainly the table name).

akka.persistence {
  plugin = "akka.persistence.journal.bigtable"

  journal {
    bigtable {
	    # qualified type name of the Google Bigtable persistence journal actor
	    class = "Hafslund.Akka.Persistence.Bigtable.Journal.BigtableJournal, Hafslund.Akka.Persistence.Bigtable"

	    # the name of the Google Bigtable used to persist journal events
	    # (full name, i.e. 'projects/<project-id>/instances/<instance-id>/tables/<table-name> )
	    table-name = ""

	    # Column family name:
	    family-name = "f"

	    # dispatcher used to drive journal actor
	    plugin-dispatcher = "akka.actor.default-dispatcher"
    }

	bigtable-sharding {
	    # qualified type name of the Google Bigtable persistence journal actor
	    class = "Hafslund.Akka.Persistence.Bigtable.Journal.ShardingBigtableJournal, Hafslund.Akka.Persistence.Bigtable"

	    # the name of the Google Bigtable used to persist journal events
	    # (full name, i.e. 'projects/<project-id>/instances/<instance-id>/tables/<table-name> )
	    table-name = ""

	    # Column family name:
	    family-name = "f"
	    
	    # dispatcher used to drive journal actor
	    plugin-dispatcher = "akka.actor.default-dispatcher"
    }
  }  

  snapshot-store {
	plugin = "akka.persistence.snapshot-store.bigtable"
    
	bigtable {
	    # qualified type name of the Google Bigtable persistence snapshot storage actor
	    class = "Hafslund.Akka.Persistence.Bigtable.Snapshot.BigtableSnapshotStore, Hafslund.Akka.Persistence.Bigtable"

	    # the name of the Google Bigtable used to persist snapshots
	    # (full name, i.e. 'projects/<project-id>/instances/<instance-id>/tables/<table-name> )
	    table-name = ""
	    
	    # Column family name:
	    family-name = "f"

	    # dispatcher used to drive snapshot storage actor
	    plugin-dispatcher = "akka.actor.default-dispatcher"
    }

	bigtable-sharding {
	    # qualified type name of the Google Bigtable persistence snapshot storage actor
	    class = "Hafslund.Akka.Persistence.Bigtable.Snapshot.ShardingBigtableSnapshotStore, Hafslund.Akka.Persistence.Bigtable"

	    # the name of the Google Bigtable used to persist snapshots
	    # (full name, i.e. 'projects/<project-id>/instances/<instance-id>/tables/<table-name> )
	    table-name = ""

	    # Column family name:
	    family-name = "f"

	    # dispatcher used to drive snapshot storage actor
	    plugin-dispatcher = "akka.actor.default-dispatcher"
    }
  }
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated