# Fun.CQRS
[![Build Status](https://travis-ci.org/fun-cqrs/fun-cqrs.svg?branch=develop)](https://travis-ci.org/fun-cqrs/fun-cqrs)
**Fun.CQRS** is a Scala library for building CQRS/ES application. It provides the basic blocks to build event driven aggregates with **Event Sourcing**.
**Fun.CQRS** provides a out-of-the-box `AkkaBackend` and a `InMemoryBackend` for testing. However, it's designed as such that other backend implementations are possible. For instance, an alternative Akka backend based on [Eventuate](https://github.com/RBMHTechnology/eventuate), a Slick backend or RxScala backend could be implementated and plugged in easily.
When using the `AkkaBackend`, Aggregates are immutable classes (case class) that live inside an `Actor`. You don't have to deal much with Akka and it's powerful abstractions, instead you concentrate in modeling your aggregate behavior and its protocol (`Commands` and `Events`). However you still need a minimal understanding of how Akka works and how to configure Akka Persistence to use your persistence plugin of choice.
That said, in **Fun.CQRS**, Aggregates are NOT Actors. The **Actor System** is used as a middleware to manage the aggregates, hold them in-memory, store events, recover aggregate state and generate read models through **Event Projections**
## Migration Guide to v1.0.0
As we progress with the v1.0.0 we update the [migration guide](https://github.com/fun-cqrs/fun-cqrs/blob/develop/migration-v1.0.0.md).
Please, make sure you follow all the instructions and broadly test your migrated project before using it with production data.
## Project artifact
The artifacts are published to Sonatype Repository. Simply add the following to your build.sbt.
```scala
libraryDependencies += "org.funcqrs" %% "fun-cqrs-akka" % "1.0.3"
```
If you want to hack **Fun.CQRS** and develop your own backend, you can import only the core module.
The core module does NOT include the Akka Backend.
```scala
libraryDependencies += "org.funcqrs" %% "fun-cqrs-core" % "1.0.3"
```
## Documentation
There is a sample application under fun-cqrs/samples/raffle (up-to-date).
You can also watch these two videos to better understand the philosophy behind Fun.CQRS.
[Devoxx 2015](https://www.youtube.com/watch?v=fQkKu4tTgCE) (2h45m)
[Scala Exchange 2015](https://skillsmatter.com/skillscasts/7047-building-a-cqrs-application-using-the-scala-type-system-and-akka) (45m)
Note that this two presentations contains code that have been refactored in the mean time. However, you will get a good picture of the available features by watching the videos.
## Contribution policy
Contributions via GitHub pull requests are gladly accepted from their original author. Along with any pull requests, please state that the contribution is your original work and that you license the work to the project under the project's open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project's open source license and warrant that you have the legal authority to do so.
没有合适的资源?快使用搜索试试~ 我知道了~
Fun.CQRS是一个ScalaCQRSES框架。它提供了使用事件溯源构建事件驱动聚合的基本块。___下载.zip
共109个文件
scala:71个
md:13个
sbt:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 89 浏览量
2023-04-18
00:13:13
上传
评论
收藏 117KB ZIP 举报
温馨提示
Fun.CQRS是一个ScalaCQRSES框架。它提供了使用事件溯源构建事件驱动聚合的基本块。___下载.zip
资源推荐
资源详情
资源评论
收起资源包目录
Fun.CQRS是一个ScalaCQRSES框架。它提供了使用事件溯源构建事件驱动聚合的基本块。___下载.zip (109个子文件)
CNAME 14B
application.conf 2KB
application.conf 2KB
reference.conf 675B
.scalafmt.conf 311B
override.css 22B
secring.gpg.enc 1KB
pubring.gpg.enc 624B
.gitignore 180B
LICENSE 636B
migration-v1.0.0.md 15KB
aggregates.md 14KB
roadmap-v1.0.0.md 6KB
backends.md 4KB
README.md 3KB
index.md 3KB
getting-started.md 1KB
akka-backend.md 1KB
query-side-tests.md 364B
command-side-tests.md 364B
advanced.md 361B
projections.md 357B
tutorial-toc.md 347B
sidebar_brand2x.png 68B
navbar_brand.png 68B
navbar_brande2x.png 68B
sidebar_brand.png 68B
build.properties 18B
build.sbt 4KB
microsites.sbt 1KB
sonatype.sbt 866B
plugins.sbt 587B
repositories.sbt 47B
version.sbt 40B
reative-streams.sc 166B
AggregateActor.scala 10KB
AggregateActorRef.scala 7KB
ProjectionMonitorActor.scala 7KB
AggregateManager.scala 6KB
Raffle.scala 5KB
Projection.scala 5KB
InMemoryTestSupport.scala 5KB
ProjectionActor.scala 5KB
ActionsTest.scala 5KB
InMemoryBackend.scala 5KB
Actions.scala 4KB
PassivationStrategies.scala 4KB
RaffleTest.scala 4KB
TimeTracker.scala 4KB
AggregateManagerTest.scala 4KB
CommandTimeoutTest.scala 3KB
Interpreter.scala 3KB
CommandHandlers.scala 3KB
AkkaBackend.scala 3KB
ConfigReader.scala 3KB
AkkaQueryProjectionTest.scala 3KB
AkkaOffsetPersistenceStrategy.scala 3KB
AppContext.scala 2KB
AndThenProjectionTest.scala 2KB
TestModel.scala 2KB
Dependencies.scala 2KB
package.scala 2KB
TimeTrackerTest.scala 2KB
ConfigReaderTest.scala 2KB
InterpreterTest.scala 2KB
IdentityInterpreter.scala 2KB
OrElseProjectionTest.scala 2KB
TryInterpreter.scala 2KB
CommandHandlerInvoker.scala 2KB
ProjectionConfig.scala 2KB
OffsetPersistence.scala 1KB
AsyncInterpreter.scala 1KB
Api.scala 1KB
AggregateMessageExtractors.scala 1KB
RaffleViewProjection.scala 1KB
AggregateRef.scala 1004B
MainAkka.scala 992B
AkkaBackendSupport.scala 962B
package.scala 922B
ProjectionFixture.scala 915B
Backend.scala 815B
MainInMemory.scala 781B
InMemoryRepository.scala 718B
RaffleView.scala 670B
AggregateFactory.scala 634B
RaffleEvents.scala 627B
CommandException.scala 581B
FailedFutures.scala 505B
TagWriteEventAdapter.scala 489B
ClassTagExtractor.scala 443B
Types.scala 437B
TaggingEventAdapter.scala 413B
RaffleCommands.scala 386B
BuildSettings.scala 373B
package.scala 362B
RaffleViewRepo.scala 287B
AggregateConfig.scala 272B
AggregateId.scala 246B
Tag.scala 213B
EventId.scala 194B
共 109 条
- 1
- 2
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9156
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功