{"id":20130445,"url":"https://github.com/ravendb/akka.persistence.ravendb","last_synced_at":"2025-08-13T15:38:58.357Z","repository":{"id":217130195,"uuid":"741038753","full_name":"ravendb/Akka.Persistence.RavenDB","owner":"ravendb","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-04T13:01:46.000Z","size":194,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-04T14:45:56.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ravendb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-09T15:17:44.000Z","updated_at":"2024-06-04T14:46:00.137Z","dependencies_parsed_at":"2024-02-18T11:31:22.852Z","dependency_job_id":"bae5f69a-ba41-4a1b-95bd-83d0bd2e7e19","html_url":"https://github.com/ravendb/Akka.Persistence.RavenDB","commit_stats":null,"previous_names":["karmeli87/akka.persistence.ravendb","ravendb/akka.persistence.ravendb"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravendb%2FAkka.Persistence.RavenDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravendb%2FAkka.Persistence.RavenDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravendb%2FAkka.Persistence.RavenDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravendb%2FAkka.Persistence.RavenDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ravendb","download_url":"https://codeload.github.com/ravendb/Akka.Persistence.RavenDB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241577071,"owners_count":19984940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T20:38:40.943Z","updated_at":"2025-08-13T15:38:58.341Z","avatar_url":"https://github.com/ravendb.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Akka.Persistence.RavenDB\n\nAkka.Persistence.RavenDB is a persistence plugin for Akka.NET that integrates RavenDB as a durable storage backend.  \nIt allows persisting journal events and snapshots of your Akka.NET actors to a RavenDB database.  \nQuerying is supported through the Akka.Persistence query interface, with RavenDB serving as the underlying storage engine.  \n\n## Configuration\n\nTo activate and use the Akka.Persistence.RavenDB plugin, you have the following configuration options:\n  * Configure using Akka.Hosting (the easy way)\n  * Configure directly in your actor system configuration file using HOCON (the classic way).\n\nNote:  \nWhen configuring the plugin using both Akka.Hosting and HOCON, in cases where parameters overlap,  \nthe configuration provided via Akka.Hosting take precedence and will override the corresponding HOCON settings.\n\nAlso please note that the following options are only supported in Hosting:\n * Passing a certificate instance (instead of path.)\n * Configuring conventions of the RavenDB client for both snapshot and journal stores.\n\n### Configure with `Akka.Hosting`\n\nUsing _Akka.Hosting_, you can easily set up the plugin within your application's startup configuration.  \nHere is a basic example:  \n\n```csharp\nusing Akka.Hosting;\nusing Akka.Persistence;\nusing Akka.Persistence.Hosting;\nusing Akka.Persistence.RavenDb.Hosting;\n\nvar host = new HostBuilder().ConfigureServices((context, services) =\u003e {\n    services.AddAkka(\"my-actor-system-name\", (builder, provider) =\u003e\n    {\n        builder.WithRavenDbPersistence(\n            urls: new[] { \"http://localhost:8080\" },\n            databaseName: \"AkkaStorage\",\n            modifyDocumentConventions: conventions =\u003e // OPTIONAL\n            {\n                conventions.DisableTopologyCache = true;\n                conventions.HttpVersion = new Version(2, 0);\n            });\n    });\n})\n    \nvar app = host.Build();\napp.Run();\n```\n\n### Configure with `HOCON`\n\nWhile both the journal and snapshot-store have the same configuration keys, they reside in separate scopes.  \nSo when configuring using _HOCON_, the settings for the journal and snapshot-store must be provided separately.  \nFor example, properties `urls` and `name` can have the same values for both stores, but they still need to be defined distinctly within their respective sections.\n\n```hocon\nakka.persistence {\n    # Setup the RavenDB journal store:\n    journal {\n        plugin = \"akka.persistence.journal.ravendb\"\n        ravendb {\n            # Qualified type name of the RavenDB persistence journal actor\n            class = \"Akka.Persistence.RavenDb.Journal.RavenDbJournal, Akka.Persistence.RavenDb\" \n\n            # Dispatcher used to drive journal actor\n            plugin-dispatcher = \"akka.actor.default-dispatcher\"\n\n            # URLs to the RavenDB cluster\n            urls = [\"http://localhost:8080\"]\n            \n            # Database name where journal events will be stored\n            name = \"AkkaStorage\"\n            \n            # Create the database if it doesn't exist\n            auto-initialize = false\n\n            # Location of a client certificate to access a secure RavenDB database.\n            # If a password is required, it should be stored in the `RAVEN_CERTIFICATE_PASSWORD` env variable. (Using hosting will store it automatically.)\n            #certificate-path = \"\\\\path\\\\to\\\\cert.pfx\"\n\n            # Timeout for 'save' requests sent to RavenDB, such as writing or deleting\n            # as opposed to stream operations which may take longer and have a different timeout (12h).\n            # Client will fail requests that take longer than this.\n            # default: 30s\n            #save-changes-timeout = 30s\n\n            # Http version for the RavenDB client to use in communication with the server\n            # default: 2.0\n            #http-version = \"2.0\"\n\n            # Determines whether to compress the data sent in the client-server TCP communication\n            # default: false\n            #disable-tcp-compression = false\n        }\n    }\n    \n    # Setup the RavenDB snapshot store:\n    snapshot-store {\n        plugin = \"akka.persistence.snapshot-store.ravendb\"\n        ravendb {\n            # Qualified type name of the RavenDB persistence snapshot actor\n            class = \"Akka.Persistence.RavenDb.Snapshot.RavenDbSnapshotStore, Akka.Persistence.RavenDb\"\n\n            # Dispatcher used to drive snapshot storage actor\n            plugin-dispatcher = \"akka.actor.default-dispatcher\"\n\n            # URLs to the RavenDB cluster\n            urls = [\"http://localhost:8080\"]\n            \n            # Database name where snapshots will be stored\n            name = \"AkkaStorage\"\n            \n            # Create the database if it doesn't exist\n            auto-initialize = false\n\n            # Location of a client certificate to access a secure RavenDB database.\n            # If a password is required, it should be stored in the `RAVEN_CERTIFICATE_PASSWORD` env variable. (Using hosting will store it automatically.)\n            #certificate-path = \"\\\\path\\\\to\\\\cert.pfx\"\n\n            # Timeout for 'save' requests sent to RavenDB, such as writing or deleting\n            # as opposed to stream operations which may take longer and have a different timeout (12h).\n            # Client will fail requests that take longer than this.\n            # default: 30s\n            #save-changes-timeout = 30s\n\n            # Http version for the RavenDB client to use in communication with the server\n            # default: 2.0\n            #http-version = \"2.0\"\n\n            # Determines whether to compress the data sent in the client-server TCP communication\n            # default: false\n            #disable-tcp-compression = false\n        }\n    }\n    \n    query {\n        # Configure RavenDB as the underlying storage engine for querying:\n        ravendb {\n            # Implementation class of the EventStore ReadJournalProvider\n            class = \"Akka.Persistence.RavenDb.Query.RavenDbReadJournalProvider, Akka.Persistence.RavenDb\"\n\n            # The interval at which to check for new ids/events\n            # default: 3s\n            #refresh-interval = 3s\n  \n            # The number of events to keep buffered while querying until they are delivered downstream.\n            # default: 65536\n            #max-buffer-size = 65536\n        }\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravendb%2Fakka.persistence.ravendb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fravendb%2Fakka.persistence.ravendb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravendb%2Fakka.persistence.ravendb/lists"}