Coder Social home page Coder Social logo

networknt / light-eventuate-4j Goto Github PK

View Code? Open in Web Editor NEW
59.0 24.0 20.0 1.98 MB

An eventual consistency framework based on Event Sourcing and CQRS on top of light-4j and Kafka

License: Apache License 2.0

Java 98.23% Shell 0.90% Dockerfile 0.87%
event-sourcing event cqrs kafka ddd aggregate entity event-driven-microservices event-driven eventuate-framework

light-eventuate-4j's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

light-eventuate-4j's Issues

[discussion] Performance - Postgres via UDS

Hi guys,

I am considering some future work during this year to look at, nothing so much important, but related to overall performance, of the light4j platform as well as possible improvement. Although this is standard in JDBC world, one must know that TCP overhead is deadly. So why not replace it with UDS (Unix Domain Sockets) instead?

You can make your small test by yourself, just execute make:
https://github.com/archenroot/ipc-bench

I plan to test some use case:

  • HARDER with discuss-able effect especially when HA is required- Event store is not build via db clustering capabilities but instead just on 2-4 independent nodes and consume from event topic new events and persist them (I understand I am will need to handle error scenarios), but either I will use kafka or chronicle queue (it does not support in the moment network replication) for higher throughput, both can be seen as buffers, so when 1 node fails, instead of trying to identify and fix, you can initiate fast redeploy and reprocess buffered messages from T - 1 minute (T - time of failure)
    - EASIER with real effect - use it for READ only schemas used with CQRS pattern in place, this could have significant performance improvement for heavy READ consuming applications. You can really boost performance here ( I come from background we were handling over 10k requests per second for example), so UDS with PostgreSQL remaining on disk mounted to ram. While postgres supports this natively, I think it is wasted time and better to do it on OS level by creating tmpfs mount and put data files there.

I will leave this open as soon as I am going to possibly incorporate some work old few years, but still not finished (but the POC is fully operational and you can test it on local instances by yourself):
impossibl/pgjdbc-ng#169

The fork with POC:
https://github.com/harbulot/pgjdbc-ng/tree/unixsocket_poc

Just again came to my head as possible improvement to make light-4j real warrior on all levels of operation.

Ladislav

throwing RuntimeException breaks light-saga-4j integration tests

This is captured by the light-bot develop-build and please see the following stacktrace. Rollback to master branch and everything work again. Did a comparison and this RuntimeException is the only one material change.

19:58:53.306 [Eventuate-subscriber-orderCommandDispatcher] DEBUG org.apache.kafka.clients.NetworkClient - [Consumer clientId=consumer-4, groupId=orderCommandDispatcher] Recorded API versions for node 2147483647: (Produce(0): 0 to 5 [usable: 5], Fetch(1): 0 to 6 [usable: 6], ListOffsets(2): 0 to 2 [usable: 2], Metadata(3): 0 to 5 [usable: 5], LeaderAndIsr(4): 0 to 1 [usable: 1], StopReplica(5): 0 [usable: 0], UpdateMetadata(6): 0 to 4 [usable: 4], ControlledShutdown(7): 0 to 1 [usable: 1], OffsetCommit(8): 0 to 3 [usable: 3], OffsetFetch(9): 0 to 3 [usable: 3], FindCoordinator(10): 0 to 1 [usable: 1], JoinGroup(11): 0 to 2 [usable: 2], Heartbeat(12): 0 to 1 [usable: 1], LeaveGroup(13): 0 to 1 [usable: 1], SyncGroup(14): 0 to 1 [usable: 1], DescribeGroups(15): 0 to 1 [usable: 1], ListGroups(16): 0 to 1 [usable: 1], SaslHandshake(17): 0 to 1 [usable: 1], ApiVersions(18): 0 to 1 [usable: 1], CreateTopics(19): 0 to 2 [usable: 2], DeleteTopics(20): 0 to 1 [usable: 1], DeleteRecords(21): 0 [usable: 0], InitProducerId(22): 0 [usable: 0], OffsetForLeaderEpoch(23): 0 [usable: 0], AddPartitionsToTxn(24): 0 [usable: 0], AddOffsetsToTxn(25): 0 [usable: 0], EndTxn(26): 0 [usable: 0], WriteTxnMarkers(27): 0 [usable: 0], TxnOffsetCommit(28): 0 [usable: 0], DescribeAcls(29): 0 [usable: 0], CreateAcls(30): 0 [usable: 0], DeleteAcls(31): 0 [usable: 0], DescribeConfigs(32): 0 [usable: 0], AlterConfigs(33): 0 [usable: 0], AlterReplicaLogDirs(34): 0 [usable: 0], DescribeLogDirs(35): 0 [usable: 0], SaslAuthenticate(36): 0 [usable: 0], CreatePartitions(37): 0 [usable: 0])
19:58:53.308 [main] DEBUG org.apache.kafka.common.metrics.Metrics - Added sensor with name node--1.bytes-sent
19:58:53.308 [Eventuate-subscriber-orderCommandDispatcher] ERROR com.networknt.eventuate.kafka.consumer.KafkaMessageProcessor - Got exception: 
java.lang.UnsupportedOperationException: implement me
	at com.networknt.tram.command.consumer.CommandHandlers.findExceptionHandler(CommandHandlers.java:28)
	at com.networknt.tram.command.consumer.CommandDispatcher.handleException(CommandDispatcher.java:148)
	at com.networknt.tram.command.consumer.CommandDispatcher.messageHandler(CommandDispatcher.java:88)
	at com.networknt.saga.participant.SagaCommandDispatcher.messageHandler(SagaCommandDispatcher.java:42)
	at com.networknt.tram.consumer.kafka.MessageConsumerKafkaImpl.lambda$subscribe$0(MessageConsumerKafkaImpl.java:42)
	at com.networknt.eventuate.kafka.consumer.KafkaMessageProcessor.process(KafkaMessageProcessor.java:35)
	at com.networknt.eventuate.kafka.consumer.EventuateKafkaConsumer.lambda$start$0(EventuateKafkaConsumer.java:105)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: null
	at com.networknt.saga.order.service.OrderCommandHandler.reject(OrderCommandHandler.java:42)
	at com.networknt.saga.participant.SagaCommandHandlersBuilder.lambda$onMessage$1(SagaCommandHandlersBuilder.java:52)
	at com.networknt.saga.participant.SagaCommandHandler.lambda$new$0(SagaCommandHandler.java:26)
	at com.networknt.tram.command.consumer.CommandHandler.lambda$new$0(CommandHandler.java:28)
	at com.networknt.tram.command.consumer.CommandHandler.invokeMethod(CommandHandler.java:63)
	at com.networknt.tram.command.consumer.CommandDispatcher.invoke(CommandDispatcher.java:100)
	at com.networknt.saga.participant.SagaCommandDispatcher.invoke(SagaCommandDispatcher.java:78)
	at com.networknt.tram.command.consumer.CommandDispatcher.messageHandler(CommandDispatcher.java:84)
	... 5 common frames omitted
19:58:53.309 [Eventuate-subscriber-orderCommandDispatcher] ERROR com.networknt.eventuate.kafka.consumer.EventuateKafkaConsumer - Got exception: 
java.lang.RuntimeException: java.lang.UnsupportedOperationException: implement me
	at com.networknt.eventuate.kafka.consumer.KafkaMessageProcessor.lambda$process$0(KafkaMessageProcessor.java:38)
	at com.networknt.tram.consumer.kafka.MessageConsumerKafkaImpl.lambda$subscribe$0(MessageConsumerKafkaImpl.java:46)
	at com.networknt.eventuate.kafka.consumer.KafkaMessageProcessor.process(KafkaMessageProcessor.java:35)
	at com.networknt.eventuate.kafka.consumer.EventuateKafkaConsumer.lambda$start$0(EventuateKafkaConsumer.java:105)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsupportedOperationException: implement me
	at com.networknt.tram.command.consumer.CommandHandlers.findExceptionHandler(CommandHandlers.java:28)
	at com.networknt.tram.command.consumer.CommandDispatcher.handleException(CommandDispatcher.java:148)
	at com.networknt.tram.command.consumer.CommandDispatcher.messageHandler(CommandDispatcher.java:88)
	at com.networknt.saga.participant.SagaCommandDispatcher.messageHandler(SagaCommandDispatcher.java:42)
	at com.networknt.tram.consumer.kafka.MessageConsumerKafkaImpl.lambda$subscribe$0(MessageConsumerKafkaImpl.java:42)
	... 3 common frames omitted
Caused by: java.lang.NullPointerException: null
	at com.networknt.saga.order.service.OrderCommandHandler.reject(OrderCommandHandler.java:42)
	at com.networknt.saga.participant.SagaCommandHandlersBuilder.lambda$onMessage$1(SagaCommandHandlersBuilder.java:52)
	at com.networknt.saga.participant.SagaCommandHandler.lambda$new$0(SagaCommandHandler.java:26)
	at com.networknt.tram.command.consumer.CommandHandler.lambda$new$0(CommandHandler.java:28)
	at com.networknt.tram.command.consumer.CommandHandler.invokeMethod(CommandHandler.java:63)
	at com.networknt.tram.command.consumer.CommandDispatcher.invoke(CommandDispatcher.java:100)
	at com.networknt.saga.participant.SagaCommandDispatcher.invoke(SagaCommandDispatcher.java:78)
	at com.networknt.tram.command.consumer.CommandDispatcher.messageHandler(CommandDispatcher.java:84)
	... 5 common frames omitted
19:58:53.309 [main] DEBUG org.apache.kafka.common.metrics.Metrics - Added sensor with name node--1.bytes-received
19:58:53.309 [main] DEBUG org.apache.kafka.common.metrics.Metrics - Added sensor with name node--1.latency
19:58:53.309 [main] DEBUG org.apache.kafka.common.network.Selector - [Consumer clientId=consumer-5, groupId=customerCommandDispatcher] Created socket with SO_RCVBUF = 65536, SO_SNDBUF = 131072, SO_TIMEOUT = 0 to node -1

Add cdcservice as light-hybrid-4j service and add command and query servers

  • Add command side light-hybrid-4j server to host all command side services.
  • Add query side light-hybrid-4j server to host all query side services.
  • Convert cdcservice to light-hybrid-4j service.

To start query side server with cdcservice

cd ~/networknt/light-eventuate-4j
mvn clean install
cd query
java -cp target/eventuate-query-1.3.0.jar:../cdcservice/target/eventuate-cdcservice-1.3.0.jar com.networknt.server.Server

To test the health of the cdcservice

curl -X POST \
  http://localhost:8080/api/json \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'postman-token: 58bb63eb-de70-b855-a633-5b043bb52c95' \
  -d '{
  "host": "lightapi.net",
  "service": "eventuate",
  "action": "cdcservice",
  "version": "0.0.1"
}'

[discusssion] Go away from broker centric systems and SQL database to get performance

This is more free topic only.

I have 2 topics to consider as replacement in the microservice framework to achieve deadly performance.

Event Store
Would you consider to replace SQL like store with Chronicle Map system?

Broker
Would you consider to replace Kafka or any other messaging with Chronicle Queue subsystem?

Best regards,

Ladislav

[discussion] Microservices are "just" highly scalable BPM engines/processes

Hi guys,

I have another interesting point to discuss. I hope you will agree on the subject of this issue. So we left BPM engines because they were just fat slow beasts missing all cool things we can do in pure event driven decoupled architectures.

No imagine that you can merge these 2 worlds back together. Having the capability of implementing the process in BPMN language, which si still superior tool and at the same moment you can split process and scale each components independently, supporting Sagas, Event Sourcing, CQRS, Auditing, etc.

Look at this promising project:
https://zeebe.io/

I think they have something fundamentally wrong -> they are still trying to work on top of service layer being Orchestrating... which is against event driven core concept :-), but I think it could be promising possible merge in some far future...

One of the test cases failed during build

Here is the stacktrace.

Running com.networknt.eventuate.test.AggregateRepositoryTest
11:06:20.115 [main] DEBUG com.networknt.eventuate.common.AggregateRepository - Exception updating aggregate
java.util.concurrent.CompletionException: com.networknt.eventuate.common.OptimisticLockingException
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
	at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
	at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614)
	at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983)
	at com.networknt.eventuate.common.AggregateRepository.lambda$null$10(AggregateRepository.java:183)
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952)
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
	at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:997)
	at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124)
	at com.networknt.eventuate.common.AggregateRepository.lambda$updateWithProvidedCommand$11(AggregateRepository.java:174)
	at com.networknt.eventuate.common.AggregateRepository.attemptOperation(AggregateRepository.java:115)
	at com.networknt.eventuate.common.AggregateRepository.withRetry(AggregateRepository.java:110)
	at com.networknt.eventuate.common.AggregateRepository.updateWithProvidedCommand(AggregateRepository.java:154)
	at com.networknt.eventuate.common.AggregateRepository.update(AggregateRepository.java:142)
	at com.networknt.eventuate.test.AggregateRepositoryTest.shouldUpdateWithOptimisticLockingFailure(AggregateRepositoryTest.java:139)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:139)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
Caused by: com.networknt.eventuate.common.OptimisticLockingException: null
	at com.networknt.eventuate.test.AggregateRepositoryTest.shouldUpdateWithOptimisticLockingFailure(AggregateRepositoryTest.java:130)
	... 41 common frames omitted
11:06:20.117 [ForkJoinPool.commonPool-worker-1] DEBUG com.networknt.eventuate.common.AggregateRepository - got optimistic locking exception - retrying
java.util.concurrent.CompletionException: com.networknt.eventuate.common.OptimisticLockingException
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
	at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:824)
	at java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:834)
	at java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2155)
	at com.networknt.eventuate.common.AggregateRepository.lambda$null$10(AggregateRepository.java:187)
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952)
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
	at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:997)
	at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124)
	at com.networknt.eventuate.common.AggregateRepository.lambda$updateWithProvidedCommand$11(AggregateRepository.java:174)
	at com.networknt.eventuate.common.AggregateRepository.attemptOperation(AggregateRepository.java:115)
	at com.networknt.eventuate.common.AggregateRepository.withRetry(AggregateRepository.java:110)
	at com.networknt.eventuate.common.AggregateRepository.updateWithProvidedCommand(AggregateRepository.java:154)
	at com.networknt.eventuate.common.AggregateRepository.update(AggregateRepository.java:142)
	at com.networknt.eventuate.test.AggregateRepositoryTest.shouldUpdateWithOptimisticLockingFailure(AggregateRepositoryTest.java:139)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:139)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
Caused by: com.networknt.eventuate.common.OptimisticLockingException: null
	at com.networknt.eventuate.test.AggregateRepositoryTest.shouldUpdateWithOptimisticLockingFailure(AggregateRepositoryTest.java:130)
	... 41 common frames omitted
11:06:20.120 [ForkJoinPool.commonPool-worker-3] DEBUG com.networknt.eventuate.common.AggregateRepository - Exception updating aggregate
java.util.concurrent.CompletionException: com.networknt.eventuate.common.DuplicateTriggeringEventException
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
	at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
	at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614)
	at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983)
	at com.networknt.eventuate.common.AggregateRepository.lambda$null$10(AggregateRepository.java:183)
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952)
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
	at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:561)
	at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:800)
	at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.networknt.eventuate.common.DuplicateTriggeringEventException: null
	at com.networknt.eventuate.test.AggregateRepositoryTest.shouldUpdateWithDuplicateTriggeringEventExceptionThrownByUpdate(AggregateRepositoryTest.java:166)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:139)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
11:06:20.121 [ForkJoinPool.commonPool-worker-3] DEBUG com.networknt.eventuate.common.AggregateRepository - Exception finding aggregate
com.networknt.eventuate.common.DuplicateTriggeringEventException: null
	at com.networknt.eventuate.test.AggregateRepositoryTest.shouldUpdateWithDuplicateTriggeringEventExceptionThrownByFind(AggregateRepositoryTest.java:193)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:139)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)

[question] How mature or industrial proven is this framework?

Hi,

I am now in need of some kind of framework to help me with implementing event store with CQRS patterns.

My natural choice was Spring technologies, second I found 2 frameworks Eventuate and Axon.

If you have minute and experience Steve, could you elaborate in few sentences where you see strengths of your solution over these, performance is not big deal in our case. In my case I also do not pickup solution which is not yet adopted in some major industrial projects, we have 3-4 months to deliver the project, so I don't have much time for experiments.

rest-query cannot be started

Hi, I am trying to do the tutorial but when I run the command

java -jar target/rest-query-1.0.0.jar

I am getting this error:

ERROR c.n.e.k.c.EventuateKafkaConsumer start - Error subscribing
org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:765)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:633)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:615)
	at com.networknt.eventuate.kafka.consumer.EventuateKafkaConsumer.start(EventuateKafkaConsumer.java:79)
	at com.networknt.eventuate.client.KafkaAggregateSubscriptions.subscribe(KafkaAggregateSubscriptions.java:81)
	at com.networknt.eventuate.common.impl.EventuateAggregateStoreImpl.subscribe(EventuateAggregateStoreImpl.java:154)
	at com.networknt.eventuate.client.EventDispatcherInitializer.registerEventHandler(EventDispatcherInitializer.java:163)
	at com.networknt.eventuate.client.EventuateClientStartupHookProvider.onStartup(EventuateClientStartupHookProvider.java:48)
	at com.networknt.server.Server.start(Server.java:112)
	at com.networknt.server.Server.main(Server.java:101)
Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers
	at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:64)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:691)
	... 9 common frames omitted
Exception in thread "main" java.lang.RuntimeException: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
	at com.networknt.eventuate.kafka.consumer.EventuateKafkaConsumer.start(EventuateKafkaConsumer.java:131)
	at com.networknt.eventuate.client.KafkaAggregateSubscriptions.subscribe(KafkaAggregateSubscriptions.java:81)
	at com.networknt.eventuate.common.impl.EventuateAggregateStoreImpl.subscribe(EventuateAggregateStoreImpl.java:154)
	at com.networknt.eventuate.client.EventDispatcherInitializer.registerEventHandler(EventDispatcherInitializer.java:163)
	at com.networknt.eventuate.client.EventuateClientStartupHookProvider.onStartup(EventuateClientStartupHookProvider.java:48)
	at com.networknt.server.Server.start(Server.java:112)
	at com.networknt.server.Server.main(Server.java:101)
Caused by: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:765)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:633)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:615)
	at com.networknt.eventuate.kafka.consumer.EventuateKafkaConsumer.start(EventuateKafkaConsumer.java:79)
	... 6 more
Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers
	at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:64)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:691)
	... 9 more

kafka,zookeeper,mysql and the cdcserver are running, I am on a macbook pro docker version 17.06.0-ce-mac19

Another failed test case

Here is the stacktrace.

Running com.networknt.eventuate.common.CompletableFutureTest
java.util.concurrent.ExecutionException: java.lang.RuntimeException: z
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
	at com.networknt.eventuate.common.CompletableFutureTest.exploreHandleAsync(CompletableFutureTest.java:25)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:139)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
Caused by: java.lang.RuntimeException: z
	at com.networknt.eventuate.common.CompletableFutureTest.lambda$exploreHandleAsync$1(CompletableFutureTest.java:21)
	at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822)
	at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:797)
	at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.util.concurrent.CompletionException: java.lang.RuntimeException: y
	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
	at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:824)
	... 6 more
Caused by: java.lang.RuntimeException: y
	at com.networknt.eventuate.common.CompletableFutureTest.lambda$exploreHandleAsync$0(CompletableFutureTest.java:18)
	at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822)
	... 6 more
Caused by: java.lang.RuntimeException: x
	at com.networknt.eventuate.common.CompletableFutureTest.exploreHandleAsync(CompletableFutureTest.java:23)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:139)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
	at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
	at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:158)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)

maven build warnings

[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-server-common:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-server-common:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-server-common/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-server-jdbc:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-server-jdbc:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-server-jdbc/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-connector-common:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-connector-common:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-connector-common/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-connector-test-util:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-connector-test-util:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-connector-test-util/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-connector-mysql-binlog:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-connector-mysql-binlog:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-connector-mysql-binlog/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-connector-polling:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-connector-polling:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-connector-polling/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-service:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-service:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-service/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-server:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-server:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-server/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client-test-domain:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client-test-domain:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client-test-domain/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client-test-example:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client-test-example:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client-test-example/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client-test-util:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client-test-util:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client-test-util/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-common:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-common:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-common/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-event:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-event:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-event/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client-jdbc-common:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client-jdbc-common:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client-jdbc-common/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client-jdbc:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client-jdbc:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client-jdbc/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-server-kafka:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-server-kafka:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-server-kafka/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-client-test:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-client-test:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-client-test/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:eventuate-cdc-polling-server:jar:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing. @ com.networknt:eventuate-cdc-polling-server:[unknown-version], /home/steve/networknt/light-eventuate-4j/eventuate-cdc-polling-server/pom.xml
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.networknt:light-eventuate-4j:pom:1.5.5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-deploy-plugin is missing.
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]

Integration tests fail when eventuate cdcserver is running

As we want to run all tests from light-bot on our devops vm with all cdcserver running, we need to figure out why tests fail in light-eventuate-4j. Need light-eventuate-4j cdcserver up and running to perform tests for all examples.

[request] Framework presentation

Hi guys,

One of the project I work on is to introduce new platform for about 42 energy transmission system operators within EU region area.

I need to sell your platform here, I think you also had already to sell the platform to the stakeholders, CEOs/CTOs, etc., so do you have some kind of platform presentation which I could use for my case?

Thanks a lot. If you have anything valuable, please share it with me on archenroot at gmail

Ladislav Jech

NOTE: I tried to add you via linkedin, but I don't have any connection to you, so without payed account wasn't possible to send you message, so using this channel.

[question] event of chain rollback

Hi guys, how do you handle following scenario?

Order of events:

  1. Booking Flight -> succeed
  2. Booking Car -> succeed
  3. Booking Hotel -> failure (room not available)

How to rollback those in as much as possible generic way? The key lies in what you call correlation or global transaction ID, which should be same in all events. So I should be able to send failure event to both booking car and flight with this global transaction id and they will independently revert the booked flight and car.

That way it can work, but it has one negative drawback
image

This way it will require each service to listen to failed events of all next services in chain, so each service will have implement event handlers for failed messages from all "next" services in process chain, on top the TCP overhead can be also deadly.

So probably better solution will be to do step-by-step rollback and not massive one:
image

I have studied sagas, but I didn't find clear answer on this common handling scenario...

The only problem with second design I see that it doesn't make sense from business perspective as when hotel failed, both cars and flights should be canceled in parallel.

Reconnect or retry from CDC server to Kafka

In the process to start the light-eventuate-4j platform, we start Mysql, Zookeeper and Kafka first and then we start CDC server. The CDC server must be started after Kafka is fully working so that the connect can be established. If CDC server is started before Kafka is ready, the connect won't be established correctly. We need to let CDC server to retry connect periodically in this case. Also, during the server running, the connection to Kafka might be disconnect for some network reason and we need to recover in this scenario.

Should we change the name to light-java-eventuate?

While working on the light-codegen, I am thinking to change this project to light-java-eventuate in order to differentiate with other language implementations like go or nodejs. However, since this framework is based on Kafka and it is very hard to implement some other languages in near future. Let's think about it. For now keep its name as light-eventuate.

captured this error from light-bot auto build

Don't know if this is just test case problem or system problem.

Feb 19, 2018 1:51:29 PM com.github.shyiko.mysql.binlog.BinaryLogClient connect
INFO: Connected to localhost:3306 at /4 (sid:1519066260764, cid:15)
Feb 19, 2018 1:51:29 PM com.github.shyiko.mysql.binlog.BinaryLogClient notifyEventListeners
WARNING: com.networknt.eventuate.cdc.mysql.binlog.MySqlBinaryLogClient$$Lambda$34/1041547629@e5752c1 choked on Event{header=EventHeaderV4{timestamp=1519066289000, eventType=EXT_WRITE_ROWS, serverId=1, headerLength=19, dataLength=132, nextPosition=511, flags=0}, data=WriteRowsEventData{tableId=110, includedColumns={0, 1, 2}, rows=[
    [com.networknt.eventuate.test.domain.Account, 00000161af681471-ca0f690322830001, 00000161af681471-ca0f690322830000]
]}}
java.lang.ArrayIndexOutOfBoundsException: 4
	at com.networknt.eventuate.cdc.mysql.binlog.WriteRowsEventDataParser.getValue(WriteRowsEventDataParser.java:72)
	at com.networknt.eventuate.cdc.mysql.binlog.WriteRowsEventDataParser.parseEventData(WriteRowsEventDataParser.java:61)
	at com.networknt.eventuate.cdc.mysql.binlog.WriteRowsEventDataParser.parseEventData(WriteRowsEventDataParser.java:20)
	at com.networknt.eventuate.cdc.mysql.binlog.MySqlBinaryLogClient.lambda$start$0(MySqlBinaryLogClient.java:85)
	at com.github.shyiko.mysql.binlog.BinaryLogClient.notifyEventListeners(BinaryLogClient.java:1055)
	at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:913)
	at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:559)
	at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:793)
	at java.lang.Thread.run(Thread.java:748)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.