SlideShare a Scribd company logo
1 of 134
Download to read offline
Akka Persistence
and Eventuate
A CQRS/ES tool comparison
Martin Krasser (@mrt1nz)
Freelance software developer/architect
History
Eventsourced Akka Persistence
Eventuate
7.2012 9.2013 1.2015
Similarities
Basis technologies
Scala
Akka actors
Akka streams
(Pluggable) storage backends
Akka actor
Actor
State
Behavior
Mailbox
transient
non-durable
Akka Persistence
and Eventuate
Persist actor state via event sourcing
Event sourcing
Capture all changes to application
state as sequence of events
Store events in event log (append-
only)
Replay events to recover application
state
Event sourcing
Commands - actions, can fail
Events - immutable facts
Event-sourced actor
Actor
State
Behavior
Mailbox
Command handler
Event handler
Command processing
Event-sourced actor
State
Command handler
Event handler
Event log
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Reply
Event log
Events
Events
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
Events (replay)
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
Events (replay)
Akka Persistence
and Eventuate
Separate command processing from
query processing
CQRS
Command Query

Responsibility Segregation
Different data models for command
processing and query processing
CQRS
Write model for command
processing
Read model for query

processing
CQRS
Can be well combined with event
sourcing (CQRS/ES)
CQRS/ES
Write model
Event log
Command Query
Events (r/w) Events (r)
Command side Query side
Read model
Abstractions
Command side Query side
Akka
Persistence
PersistentActor
PersistentView
Source[E,M]
Eventuate EventsourcedActor
EventsourcedView
EventsourcedProcessor
Source[E,M]
*) work in progress
PersistentActor EventsourcedActor
PersistentActor EventsourcedActor
State
PersistentActor EventsourcedActor
Command

handler
PersistentActor EventsourcedActor
Event

handler
PersistentActor EventsourcedActor
Snapshot

handler
Differences
Command side
At a glance
https://twitter.com/mrt1nz/status/573382831889653760
Consistency
Akka Persistence and Eventuate
support strong consistency
Eventuate additionally supports
relaxation to causal consistency
Akka Persistence
Enforces strong consistency on
command side
PersistentActors must be global
singletons
No actor/state replication
Eventuate
EventsourcedActors can be replicated
State replication via reliable,
asynchronous event replication
Replication across locations
(availability zones)
Replication
Location A
Location B
Location C
Replication
Location A
Application state
Location B
Location C
Replication
Events
Events
Location A
Application state
Location B
Location C
Replication
Events
Events
Location A
Application state
Location B
Location C
Replication
Command
Location A
Location B
Location C
Replication
Command
X
Location A
Location B
Location C
Replication
Command
X
Events
Events
Location A
Location B
Location C
Replication
Command
X
X
X
Events
Events
Location A
Location B
Location C
Eventuate
Replicas writeable at all locations =
multi-master
Write-availability during network
partitions
Eventuate
Write conflicts
detection
tracking
automated resolution
interactive resolution
Partition
Location A
Location B
Location C
Partition
Command
Location A
Location B
Location C
Partition
Command
X
Location A
Location B
Location C
Partition
Command
X
Events
Location A
Location B
Location C
Partition
Command
X
XEvents
Location A
Location B
Location C
Partition
Command
Command
X
XEvents
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
Events
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
Events
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
EventsEvents
Events
Location A
Location B
Location C
Conflict
XY
XY
XY
Location A
Location B
Location C
Resolution
XY
XY
XY
Interactive
resolution
XY => Z
Location A
Location B
Location C
Resolution
XY
XY
Interactive
resolution
XY => Z
Z
Location A
Location B
Location C
Resolution
XY
XY
Interactive
resolution
XY => Z
Z
Events
Events
Location A
Location B
Location C
Resolution
Interactive
resolution
XY => Z
Z
Z
Z
Events
Events
Location A
Location B
Location C
Eventuate
Strong consistency within location*)
Causal consistency across locations
Causality is tracked with vector
clocks
*) relaxation to causal consistency also possible within location
Causal consistency
example
Distributed chat application
FIFO reliable broadcast vs.
Causal reliable broadcast
Inspired by ACM article “Don’t Settle
for Eventual Consistency”
http://queue.acm.org/detail.cfm?
id=2610533
Causal consistency
example
FIFO rel. broadcast
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
Alice
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
DC1
DC2
DC3
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
Bob
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
Causality violation!
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
Retry
Causality violation!
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Causality

check
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
Causality

check
DC1
DC2
DC3
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
- Alice: Whew, found it upstairs
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
Causal re-ordering
DC1
DC2
DC3
Causal rel. broadcast
Causal consistency
Causally related events are
delivered in same order at all
locations
Concurrent events can be delivered
in any order at different locations
Differences
Event log
“Local”
event log
Eventuate
- LevelDB
- Cassandra
Location A
Location B
Location C
“Local”
event log
“Replicated”
event log
Eventuate
- LevelDB
- Cassandra
Location A
Location B
Location C
- LevelDB
- Cassandra
EventsEvents
Events
Local event log
Storage order consistent with

causal order
Given the potential causality
relation ➞ of events
Local event logs are linear
extensions of ➞
Replicated event log
Same causal event storage order 

at different locations
Different total event storage order 

at different locations
Akka Persistence
- LevelDB
- Cassandra
- EventStore
- MongoDB
- Kafka
- …
Location A
Location B
Location C
Differences
Event collaboration
Akka Persistence
PA
PA
PA
PA
Event log:
private for writing
shared for reading
(query side)
Eventuate
EA
EA
EA
Event log:
shared for writing
shared for reading
EA
Event routing
EA
EA
EA
Event routing
EA
EA
EA
e1
Event routing
EA
EA
EA
e1
e1
Event routing
EA
EA
EA
e1
e1
All
Topic
Aggregate id
…
Event routing
EA
EA
EA
e1
e1
EAEA
e1
EA
e1
Location A
Location B
Location C
Event collaboration
State replication
Service interaction
Event collaboration
S2
S1
S1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
S1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
S1
e1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
e2
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
e2
e2
Event collaboration
Reliable, distributed and partition-
tolerant business processes
Event-driven (micro-)service
architectures
Event collaboration
Reliable event delivery
Causal event delivery
De-duplicated event stream
Differences
Query side
Akka Persistence 2.3
PA
PA
PV
PV
PV
PersistentViews on single PersistentActor

(default)
Akka Persistence 2.4
PA
PA
S
S
S
Stream Sources for multiple PersistentActors

(requires storage plugin support)
Eventuate
EV
EV
EventsourcedViews on multiple EventsourcedActors

(default, shared local log)
EA
EA
EA
Eventuate
EV
EV
EventsourcedViews on multiple EventsourcedActors

(default, shared replicated log)
EA
EA
EA
EA
EAEA
Location A
Location B
Location C
Consistency in CQRS
Eventual
consistency
Causal
consistency
Akka
Persistence
usually per PA
(plugin-specific)
Eventuate
Causal consistency
Single EA/EV: default
Across EA/EV: conditional requests
Example scenario
Update a write model (EA)
Query a read model (EV)
Query result should include effect
that was caused by the update
Conditional request
EA
Location A
EV
Location B
Conditional request
EA
Location A
EV
Location B
cmd
Conditional request
EA
Location A
EV
Location B
evt
cmd
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd reply(vts)
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
deliver
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
reply
deliver
Akka Distributed Data
and Eventuate
CRDTs
CRDTs
Conflict-free Replicated Data Types
Automated resolution of write conflicts
CRDTs
Akka distributed data: CvRDTs

(convergent or state-based)
Eventuate: CmRDTs

(commutative or operation-based)
CRDTs
CvRDTs CmRDTs
Message
payload
Current state Operations
Communication
middleware
No guarantees
Reliable
broadcast
(idempotent)
Change
history
CvRDT intern Persistent log
Specification
“A comprehensive study of
Convergent and Commutative
Replicated Data Types”
http://hal.upmc.fr/docs/00/55/55/88/
PDF/techreport.pdf
Akka CvRDTs
10 implemented from specification

(incl. counters, registers, sets, maps)
In-memory only (non-durable)
Custom data types can be defined
Eventuate CmRDTs
4 implemented from specification

(Counter, MV/LWW-register, OR-Set)
Durable via event sourcing
Eventuate CRDT framework
Documentation
http://rbmhtechnology.github.io/eventuate/
http://doc.akka.io/docs/akka/2.4.0/scala/
persistence.html
http://doc.akka.io/docs/akka/2.4.0/scala/
persistence-query.html
http://doc.akka.io/docs/akka/2.4.0/scala/
distributed-data.html
Thank you!

More Related Content

Viewers also liked

Akka persistence webinar
Akka persistence webinarAkka persistence webinar
Akka persistence webinar
patriknw
 

Viewers also liked (20)

CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and Akka
 
Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015
 
Akka persistence webinar
Akka persistence webinarAkka persistence webinar
Akka persistence webinar
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka http
 
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
 
Akka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignAkka and the Zen of Reactive System Design
Akka and the Zen of Reactive System Design
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State Machine
 
Prolog Visualizer
Prolog VisualizerProlog Visualizer
Prolog Visualizer
 
Microservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyMicroservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with Technology
 
Fluent-bit
Fluent-bitFluent-bit
Fluent-bit
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
 
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
 
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
 
scalaphx-akka-http
scalaphx-akka-httpscalaphx-akka-http
scalaphx-akka-http
 
A csodák logikája
A csodák logikájaA csodák logikája
A csodák logikája
 
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion   akka persistence, cqrs%2 fes y otras siglas del montónCodemotion   akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
 

Recently uploaded

Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Recently uploaded (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 

Akka Persistence and Eventuate