links to platform guide (#29846)
This commit is contained in:
parent
12ca84c247
commit
5db6a3a491
7 changed files with 19 additions and 45 deletions
|
|
@ -29,10 +29,8 @@ side of an application, however it can help to migrate data from the write side
|
||||||
simple scenarios Persistence Query may be powerful enough to fulfill the query needs of your app, however we highly
|
simple scenarios Persistence Query may be powerful enough to fulfill the query needs of your app, however we highly
|
||||||
recommend (in the spirit of CQRS) of splitting up the write/read sides into separate datastores as the need arises.
|
recommend (in the spirit of CQRS) of splitting up the write/read sides into separate datastores as the need arises.
|
||||||
|
|
||||||
|
The @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/) explains how to
|
||||||
The [CQRS with Akka 2.6 video](https://akka.io/blog/news/2020/02/05/akka-cqrs-video) is a good starting point for
|
implement an Event Sourced CQRS application with Akka Persistence and Akka Projections.
|
||||||
learning how to use `eventsByTag` to implement CQRS with Akka. Also, watch the introduction to
|
|
||||||
[Event Sourcing with Akka 2.6 video](https://akka.io/blog/news/2020/01/07/akka-event-sourcing-video).
|
|
||||||
|
|
||||||
## Design overview
|
## Design overview
|
||||||
|
|
||||||
|
|
@ -344,23 +342,8 @@ resilience is important so that if a node crashes the persistent queries are qui
|
||||||
resume operations @ref:[Cluster Sharding](cluster-sharding.md) together with event tagging is an excellent fit to
|
resume operations @ref:[Cluster Sharding](cluster-sharding.md) together with event tagging is an excellent fit to
|
||||||
shard events over a cluster.
|
shard events over a cluster.
|
||||||
|
|
||||||
The [Lagom framework](https://www.lagomframework.com), which is built on top of Akka encodes many of the best practices
|
|
||||||
around this. For more details see @java[[Managing Data Persistence](https://www.lagomframework.com/documentation/current/java/ES_CQRS.html)]
|
|
||||||
@scala[[Managing Data Persistence](https://www.lagomframework.com/documentation/current/scala/ES_CQRS.html)] and
|
|
||||||
@java[[Persistent Entity](https://www.lagomframework.com/documentation/current/java/PersistentEntity.html)]
|
|
||||||
@scala[[Persistent Entity](https://www.lagomframework.com/documentation/current/scala/PersistentEntity.html)] in the Lagom documentation.
|
|
||||||
|
|
||||||
|
|
||||||
### Plugin TCK
|
|
||||||
|
|
||||||
TODO, not available yet.
|
|
||||||
|
|
||||||
## Example project
|
## Example project
|
||||||
|
|
||||||
@java[@extref[CQRS example project](samples:akka-samples-cqrs-java)]
|
The @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/) explains how to
|
||||||
@scala[@extref[CQRS example project](samples:akka-samples-cqrs-scala)]
|
use Event Sourcing and Projections together. The events are tagged to be consumed by even processors to build
|
||||||
is an example project that can be downloaded, and with instructions of how to run.
|
other representations from the events, or publish the events to other services.
|
||||||
|
|
||||||
This project contains a Shopping Cart sample illustrating how to use Akka Persistence.
|
|
||||||
The events are tagged to be consumed by even processors to build other representations
|
|
||||||
from the events, or publish the events to other services.
|
|
||||||
|
|
|
||||||
|
|
@ -52,12 +52,10 @@ This project contains a Shopping Cart sample illustrating how to use Akka Persis
|
||||||
|
|
||||||
## CQRS
|
## CQRS
|
||||||
|
|
||||||
@java[@extref[CQRS example project](samples:akka-samples-cqrs-java)]
|
The @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/) contains a
|
||||||
@scala[@extref[CQRS example project](samples:akka-samples-cqrs-scala)]
|
Shopping Cart sample illustrating how to use Event Sourcing and Projections together. The events are
|
||||||
|
tagged to be consumed by even processors to build other representations from the events, or publish the events
|
||||||
This project contains a Shopping Cart sample illustrating how to use Akka Persistence.
|
to other services.
|
||||||
The events are tagged to be consumed by even processors to build other representations
|
|
||||||
from the events, or publish the events to other services.
|
|
||||||
|
|
||||||
## Replicated Event Sourcing
|
## Replicated Event Sourcing
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,7 @@ In a microservices architecture, you should consider communication within a serv
|
||||||
In general we recommend against using Akka Cluster and actor messaging between _different_ services because that
|
In general we recommend against using Akka Cluster and actor messaging between _different_ services because that
|
||||||
would result in a too tight code coupling between the services and difficulties deploying these independent of
|
would result in a too tight code coupling between the services and difficulties deploying these independent of
|
||||||
each other, which is one of the main reasons for using a microservices architecture.
|
each other, which is one of the main reasons for using a microservices architecture.
|
||||||
See the discussion on
|
See the discussion on @extref[Internal and External Communication](platform-guide:concepts/internal-and-external-communication.html)
|
||||||
@scala[[Internal and External Communication](https://www.lagomframework.com/documentation/current/scala/InternalAndExternalCommunication.html)]
|
|
||||||
@java[[Internal and External Communication](https://www.lagomframework.com/documentation/current/java/InternalAndExternalCommunication.html)]
|
|
||||||
in the docs of the [Lagom Framework](https://www.lagomframework.com) (where each microservice is an Akka Cluster)
|
|
||||||
for some background on this.
|
for some background on this.
|
||||||
|
|
||||||
Nodes of a single service (collectively called a cluster) require less decoupling. They share the same code and
|
Nodes of a single service (collectively called a cluster) require less decoupling. They share the same code and
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
# CQRS
|
# CQRS
|
||||||
|
|
||||||
@ref:[EventSourcedBehavior](persistence.md)s along with [Akka Projections](https://doc.akka.io/docs/akka-projection/current/) can be used to implement
|
@ref:[EventSourcedBehavior](persistence.md)s along with [Akka Projections](https://doc.akka.io/docs/akka-projection/current/)
|
||||||
Command Query Responsibility Segregation (CQRS).
|
can be used to implement Command Query Responsibility Segregation (CQRS). The @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/)
|
||||||
|
explains how to use Event Sourcing and Projections together.
|
||||||
The @java[@extref[CQRS example project](samples:akka-samples-cqrs-java)]@scala[@extref[CQRS example project](samples:akka-samples-cqrs-scala)]
|
|
||||||
shows how to do this, including scaling read side processors for building projections.
|
|
||||||
In the sample the events are tagged to be consumed by even processors to build other representations
|
|
||||||
from the events, or publish the events to other services.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -234,6 +234,7 @@ To continue your journey with Akka, we recommend:
|
||||||
|
|
||||||
To get from this guide to a complete application you would likely need to provide either an UI or an API. For this we recommend that you look at the following technologies and see what fits you:
|
To get from this guide to a complete application you would likely need to provide either an UI or an API. For this we recommend that you look at the following technologies and see what fits you:
|
||||||
|
|
||||||
|
* @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/) illustrates how to implement an Event Sourced CQRS application with Akka Persistence and Akka Projections
|
||||||
* [Akka HTTP](https://doc.akka.io/docs/akka-http/current/introduction.html) is a HTTP server and client library, making it possible to publish and consume HTTP endpoints
|
* [Akka HTTP](https://doc.akka.io/docs/akka-http/current/introduction.html) is a HTTP server and client library, making it possible to publish and consume HTTP endpoints
|
||||||
* [Play Framework](https://www.playframework.com) is a full fledged web framework that is built on top of Akka HTTP, it integrates well with Akka and can be used to create a complete modern web UI
|
* [Play Framework](https://www.playframework.com) is a full fledged web framework that is built on top of Akka HTTP, it integrates well with Akka and can be used to create a complete modern web UI
|
||||||
* [Lagom](https://www.lagomframework.com) is an opinionated microservice framework built on top of Akka, encoding many best practices around Akka and Play
|
* [Lagom](https://www.lagomframework.com) is an opinionated microservice framework built on top of Akka, encoding many best practices around Akka and Play
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,8 @@ events to the actor, allowing it to rebuild its state. This can be either the fu
|
||||||
or starting from a checkpoint in a snapshot which can dramatically reduce recovery times.
|
or starting from a checkpoint in a snapshot which can dramatically reduce recovery times.
|
||||||
|
|
||||||
The [Event Sourcing with Akka 2.6 video](https://akka.io/blog/news/2020/01/07/akka-event-sourcing-video)
|
The [Event Sourcing with Akka 2.6 video](https://akka.io/blog/news/2020/01/07/akka-event-sourcing-video)
|
||||||
is a good starting point for learning Event Sourcing, and then followed by the
|
is a good starting point for learning Event Sourcing, together with the @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/)
|
||||||
[CQRS with Akka 2.6 video](https://akka.io/blog/news/2020/02/05/akka-cqrs-video).
|
that illustrates how to implement an Event Sourced CQRS application with Akka Persistence and Akka Projections.
|
||||||
|
|
||||||
@@@ note
|
@@@ note
|
||||||
|
|
||||||
|
|
@ -676,10 +676,8 @@ reference documentation of the chosen plugin.
|
||||||
is an example project that can be downloaded, and with instructions of how to run.
|
is an example project that can be downloaded, and with instructions of how to run.
|
||||||
This project contains a Shopping Cart sample illustrating how to use Akka Persistence.
|
This project contains a Shopping Cart sample illustrating how to use Akka Persistence.
|
||||||
|
|
||||||
The Shopping Cart sample is expanded further in the
|
The Shopping Cart sample is expanded further in the @extref[Microservices with Akka tutorial](platform-guide:microservices-tutorial/).
|
||||||
@java[@extref[CQRS example project](samples:akka-samples-cqrs-java)]
|
In that sample the events are tagged to be consumed by even processors to build other representations
|
||||||
@scala[@extref[CQRS example project](samples:akka-samples-cqrs-scala)]
|
|
||||||
sample. In that sample the events are tagged to be consumed by even processors to build other representations
|
|
||||||
from the events, or publish the events to other services.
|
from the events, or publish the events to other services.
|
||||||
|
|
||||||
@java[@extref[Multi-DC Persistence example project](samples:akka-samples-persistence-dc-java)]
|
@java[@extref[Multi-DC Persistence example project](samples:akka-samples-persistence-dc-java)]
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ object Paradox {
|
||||||
.url(version.value), // for links like this: @github[#1](#1) or @github[83986f9](83986f9)
|
.url(version.value), // for links like this: @github[#1](#1) or @github[83986f9](83986f9)
|
||||||
"extref.akka.http.base_url" -> "https://doc.akka.io/docs/akka-http/current/%s",
|
"extref.akka.http.base_url" -> "https://doc.akka.io/docs/akka-http/current/%s",
|
||||||
"extref.akka-management.base_url" -> "https://doc.akka.io/docs/akka-management/current/%s",
|
"extref.akka-management.base_url" -> "https://doc.akka.io/docs/akka-management/current/%s",
|
||||||
|
"extref.platform-guide.base_url" -> "https://developer.lightbend.com/docs/akka-platform-guide/%s",
|
||||||
"extref.wikipedia.base_url" -> "https://en.wikipedia.org/wiki/%s",
|
"extref.wikipedia.base_url" -> "https://en.wikipedia.org/wiki/%s",
|
||||||
"extref.github.base_url" -> (GitHub.url(version.value) + "/%s"), // for links to our sources
|
"extref.github.base_url" -> (GitHub.url(version.value) + "/%s"), // for links to our sources
|
||||||
"extref.samples.base_url" -> "https://developer.lightbend.com/start/?group=akka&project=%s",
|
"extref.samples.base_url" -> "https://developer.lightbend.com/start/?group=akka&project=%s",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue