{"repo":"transferwise/idempotence4j","free":true,"listed":false,"github":"https://github.com/transferwise/idempotence4j","clone":"git clone https://github.com/transferwise/idempotence4j.git","description":"Lightweight library for handling idempotent actions","language":"Java","stars":77,"topics":["idempotency","postgresql","mariadb","spring-boot","side-effects"],"license":null,"category":"databases-storage","readme_excerpt":"idempotence4j idempotence4j is a lightweight library that provides support for handling idempotent actions. All actions are persisted to a database and it's expected that client's only going to use database master node to avoid any possible issues caused by the replication lag. Requirements - Java 17+ Overview idempotence4j provides several modules: - idempotence4j-core - exposes main API and defines action execution strategy - idempotence4j-postgres - PostgreSQL integration, defines flyway migrations, contains PostgreSQL implementation for action repository and locking - idempotence4j-mariadb - MariaDb integration, defines flyway migrations, contains MariaDb implementation for action repository and locking - idempotence4j-metrics - publishes metrics to io.micrometer registry - idempotence4j-spring-boot-starter - auto configuration for IdempotenceService with automatic discovery of DB implementation module Usage When invoking idempotence service clients are expected to provide: - actionId - unique identifier for the current action - onRetry - function that maps persisted result of previously successful action to client result - procedure - supplier that executes the action processing logic and returns result to client - toRecord - function that maps client result to the one being persisted in the database - recordType - type of the stored record required for a later de-serialisation Adding idempotence4j to your build idempotence4j's Maven group ID is com.transferwise.idempote","default_branch":null,"files":null,"tree":[],"storefront":"/r/transferwise","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/transferwise/idempotence4j/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}