Reactive CQRS + ES lib
This is simple lib which adds reactive command handling classes to your springboot app
Key features:
- dispatches command to reactive handlers
Scheduled functionality
- Event bus
- Command bus with handler that could return event
- automatically apply event on bus
Usage
Import lib
With maven
<dependency>
  <groupId>io.github.yasiekz</groupId>
  <artifactId>reactive-cqrs-es-lib</artifactId>
  <version>1.0.0</version>
</dependency> 
With gradle
repositories {
    mavenCentral()
}
dependencies {
    implementation 'io.github.yasiekz:reactive-cqrs-es-lib:1.0.0'
} 
Register bean in @Configuration class
 
@Configuration
public class CqrsConfiguration {
    
    @Bean
    public CommandDispatcher createSimpleCommandBus(List<SimpleCommandHandler> handlers) {
        return new SimpleCommandBus(handlers);
    }
} 
Create some commands
import io.github.yasiekz.reactive.cqrses.command.Command;
public class DummyCommand extends Command {
    // some data here with getters
} 
Important Commands should be immutable!
Create handler for Command
package io.github.yasiekz.reactive.cqrses.command.SimpleCommandHandler;
import reactor.core.publisher.Mono;
public class DummyCommandHandler implements SimpleCommandHandler<DummyCommand> {
    @Override
    public Mono<Void> handle(final DummyCommand command) {
        // do something with command using reactive flow
    }
}
 
Local run
Requirements
- Java 11 to build project
- Spring boot 2.1.x
Run tests
./gradlew check 
 JarCasting
 JarCasting