{"id":18555688,"url":"https://github.com/romeh/akka-persistance-ignite","last_synced_at":"2025-04-09T23:32:24.911Z","repository":{"id":57734663,"uuid":"113199098","full_name":"Romeh/akka-persistance-ignite","owner":"Romeh","description":"Akka persistance plugin implementation with Apache Ignite","archived":false,"fork":false,"pushed_at":"2019-02-28T12:59:11.000Z","size":152,"stargazers_count":21,"open_issues_count":3,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T13:51:17.634Z","etag":null,"topics":["akka","akka-persistence","apache-ignite","datagrid","eventsourcing","in-memory-database","journal","snapshot-store"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Romeh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-05T15:26:23.000Z","updated_at":"2024-09-22T11:16:11.000Z","dependencies_parsed_at":"2022-09-26T22:10:54.195Z","dependency_job_id":null,"html_url":"https://github.com/Romeh/akka-persistance-ignite","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romeh%2Fakka-persistance-ignite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romeh%2Fakka-persistance-ignite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romeh%2Fakka-persistance-ignite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romeh%2Fakka-persistance-ignite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Romeh","download_url":"https://codeload.github.com/Romeh/akka-persistance-ignite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248129942,"owners_count":21052668,"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":["akka","akka-persistence","apache-ignite","datagrid","eventsourcing","in-memory-database","journal","snapshot-store"],"created_at":"2024-11-06T21:27:35.251Z","updated_at":"2025-04-09T23:32:24.269Z","avatar_url":"https://github.com/Romeh.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# akka-persistence-ignite (Java API)![Twitter Follow](https://img.shields.io/twitter/follow/mromeh.svg?style=social)\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/5cb7dec4f09b44eca8677c5feebadcf1)](https://app.codacy.com/app/Romeh/akka-persistance-ignite?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=Romeh/akka-persistance-ignite\u0026utm_campaign=Badge_Grade_Dashboard)\n\n![Build Status](https://travis-ci.org/Romeh/akka-persistance-ignite.svg?branch=master)\n![Maven Central](https://img.shields.io/nexus/r/https/oss.sonatype.org/io.github.romeh/akka-persistence-ignite.svg?style=flat)\n\nA _**journal**_ and _**snapshot**_  store plugin for [Akka Persistence](https://doc.akka.io/docs/akka/2.5.4/java/persistence.html) using **_Apache Ignite_**.\n\n![alt text](Final.png)\n\nThis is mainly using Apache ignite with akka persistence to provide journal and snapshot store \nby using the partitioned caches and benefit from the distributed highly available data grid features plus\nthe nice query and data computations features in Ignite that can be used to have normalized views from the event store and\ndo analytical jobs over them despite it is advised to keep write nodes separate from read nodes for better scalability\n\nAkka and Ignite used versions:\n--------------\n\nAkka version :2.5.18+ , Ignite Version :2.7.0+\n\nJournal plugin \n--------------\n- All operations required by the Akka Persistence journal plugin API are fully supported.\n- it support storing the tags of the events (event tagging)\n- It use Apache Ignite binary serialization for its queries\n- Events serialization will be based into the types serializers definition in your Akka configuration \n- It use apache ignite partitioned cache with default number of backups to 1 , that can be changed into reference.conf file.\n \nSnapshot store plugin\n---------------------\n - Implements the Akka Persistence [snapshot store plugin API](https://doc.akka.io/docs/akka/current/scala/persistence.html#snapshot-store-plugin-api).\n \n  \nHow to use \n---------------------\nEnable plugins\n````buildoutcfg\nakka.persistence.journal.plugin = \"akka.persistence.journal.ignite\"\nakka.persistence.snapshot-store.plugin = \"akka.persistence.snapshot.ignite\"\n````\n\nMaven dependency \n````\n        \u003cdependency\u003e\n            \u003cgroupId\u003eio.github.romeh\u003c/groupId\u003e\n            \u003cartifactId\u003eakka-persistence-ignite\u003c/artifactId\u003e\n            \u003cversion\u003e1.1.1\u003c/version\u003e\n        \u003c/dependency\u003e\n````\n\nplease check the project pom.xml for maven repo configuration\n\nConfigure Ignite data grid properties , default configured on localhost. \n````buildoutcfg\nignite {\n  //to start client or server node to connect to Ignite data cluster \n  isClientNode = false\n  // for ONLY testing we use localhost\n  // used for grid cluster connectivity\n  tcpDiscoveryAddresses = \"localhost\"\n  metricsLogFrequency = 0\n  // thread pools used by Ignite , should based into target machine specs\n  queryThreadPoolSize = 4\n  dataStreamerThreadPoolSize = 1\n  managementThreadPoolSize = 2\n  publicThreadPoolSize = 4\n  systemThreadPoolSize = 2\n  rebalanceThreadPoolSize = 1\n  asyncCallbackPoolSize = 4\n  peerClassLoadingEnabled = false\n  // to enable or disable durable memory persistance\n  enableFilePersistence = true\n  // used for grid cluster connectivity, change it to suit your configuration \n  igniteConnectorPort = 11211\n  // used for grid cluster connectivity , change it to suit your configuration \n  igniteServerPortRange = \"47500..47509\"\n  //durable memory persistance storage file system path , change it to suit your configuration \n  ignitePersistenceFilePath = \"./data\"\n}\n````\nContributions are more then welcomed:\n---------------------\nPlease free to jump and help will be highly appreciated \n\nTODO (enhancement issues created for tracking): \n---------------------\n- [Persistence Query](https://doc.akka.io/docs/akka/current/scala/persistence-query.html) to be implemented but it could be not needed as we can use the Apache Ignite sql and text query capabilities \n- Performance testing policy needed to be defined and executed \n- Adding HTTPS support \n- Performance test ignite client node vs server node connectivity\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromeh%2Fakka-persistance-ignite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromeh%2Fakka-persistance-ignite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromeh%2Fakka-persistance-ignite/lists"}