{"id":19656854,"url":"https://github.com/daggerok/axon-snapshots","last_synced_at":"2025-06-16T22:06:13.445Z","repository":{"id":151041449,"uuid":"120978738","full_name":"daggerok/axon-snapshots","owner":"daggerok","description":"Axon shaptshots","archived":false,"fork":false,"pushed_at":"2018-02-14T03:00:30.000Z","size":168,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-27T02:24:26.211Z","etag":null,"topics":["axon","axon-framework","axonframework"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daggerok.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-10T02:54:20.000Z","updated_at":"2018-03-31T11:31:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a11d8a2-965f-4765-a426-62707dca2f7b","html_url":"https://github.com/daggerok/axon-snapshots","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/daggerok/axon-snapshots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Faxon-snapshots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Faxon-snapshots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Faxon-snapshots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Faxon-snapshots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daggerok","download_url":"https://codeload.github.com/daggerok/axon-snapshots/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daggerok%2Faxon-snapshots/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260249956,"owners_count":22980763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axon","axon-framework","axonframework"],"created_at":"2024-11-11T15:29:08.008Z","updated_at":"2025-06-16T22:06:13.422Z","avatar_url":"https://github.com/daggerok.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= axon snapshots problem  image:https://travis-ci.org/daggerok/axon-snapshots.svg?branch=master[\"Build Status\", link=\"https://travis-ci.org/daggerok/axon-snapshots\"]\n\n//tag::content[]\n\n.problem occurs if I'm trying use snapshots like so:\n[sources,kotlin]\n----\n@Bean\nfun snapshotterFactoryBean() = SpringAggregateSnapshotterFactoryBean()\n\n@Bean(\"axonChatRepository\")\nfun axonChatSnapshotterRepository(eventStore: EventStore, snapshotter: Snapshotter): Repository\u003cChatAggregator\u003e =\n    EventSourcingRepository(ChatAggregator::class.java, eventStore, EventCountSnapshotTriggerDefinition(snapshotter, amount))\n----\n\n.how to reproduce\n----\n# copy config with snapshotter\ncp -Rf src/main/java/daggerok/chat/AxonConfig.kt-w-shapshotter src/main/java/daggerok/chat/AxonConfig.kt\n\n./mvnw                  # or ./gradlew\njava -jar target/*.jar  # or: java -jar build/libs/*.jar\n\nhttp :8080/api/room roomId=my-room\nhttp put :8080/api/room/my-room/max\nhttp put :8080/api/room/my-room/valery\nhttp delete :8080/api/room/my-room/max\nhttp delete :8080/api/room/my-room/valery\n\n# log output:\n2018-02-10 04:37:20.852  INFO 76342 --- [nio-8080-exec-3] o.a.c.callbacks.LoggingCallback          : Command executed successfully: daggerok.chat.CreateRoomCommand\n2018-02-10 04:37:22.120  INFO 76342 --- [nio-8080-exec-7] o.a.c.callbacks.LoggingCallback          : Command executed successfully: daggerok.chat.EnterRoomCommand\n2018-02-10 04:37:22.717  INFO 76342 --- [nio-8080-exec-9] o.a.c.callbacks.LoggingCallback          : Command executed successfully: daggerok.chat.EnterRoomCommand\n2018-02-10 04:37:23.893  INFO 76342 --- [nio-8080-exec-3] o.a.c.callbacks.LoggingCallback          : Command executed successfully: daggerok.chat.LeaveRoomCommand\n\n# but after last command next failure will occurs!\n\n2018-02-10 04:37:24.470  WARN 76342 --- [nio-8080-exec-5] o.a.c.callbacks.LoggingCallback          : Command resulted in exception: daggerok.chat.LeaveRoomCommand\n\norg.axonframework.eventsourcing.IncompatibleAggregateException: Aggregate identifier must be non-null after applying an event. Make sure the aggregate identifier is initialized at the latest when handling the creation event.\n        at org.axonframework.eventsourcing.EventSourcedAggregate.publish(EventSourcedAggregate.java:160) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[na:1.8.0_152]\n        at org.axonframework.eventsourcing.EventSourcedAggregate.lambda$initializeState$1(EventSourcedAggregate.java:212) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.inspection.AnnotatedAggregate.lambda$execute$2(AnnotatedAggregate.java:174) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.AggregateLifecycle.lambda$execute$3(AggregateLifecycle.java:199) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.AggregateLifecycle.executeWithResult(AggregateLifecycle.java:166) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.AggregateLifecycle.execute(AggregateLifecycle.java:198) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.inspection.AnnotatedAggregate.execute(AnnotatedAggregate.java:174) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.eventsourcing.EventSourcedAggregate.initializeState(EventSourcedAggregate.java:209) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.eventsourcing.EventSourcingRepository.doLoadWithLock(EventSourcingRepository.java:215) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.eventsourcing.EventSourcingRepository.doLoadWithLock(EventSourcingRepository.java:45) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.LockingRepository.doLoad(LockingRepository.java:162) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.LockingRepository.doLoad(LockingRepository.java:49) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.model.AbstractRepository.lambda$load$7(AbstractRepository.java:116) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at java.util.HashMap.computeIfAbsent(HashMap.java:1127) ~[na:1.8.0_152]\n        at org.axonframework.commandhandling.model.AbstractRepository.load(AbstractRepository.java:115) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.AggregateAnnotationCommandHandler$AggregateCommandHandler.handle(AggregateAnnotationCommandHandler.java:195) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.AggregateAnnotationCommandHandler$AggregateCommandHandler.handle(AggregateAnnotationCommandHandler.java:189) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.AggregateAnnotationCommandHandler.handle(AggregateAnnotationCommandHandler.java:151) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.AggregateAnnotationCommandHandler.handle(AggregateAnnotationCommandHandler.java:43) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:57) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.messaging.interceptors.CorrelationDataInterceptor.handle(CorrelationDataInterceptor.java:55) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:55) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.executeWithResult(DefaultUnitOfWork.java:69) ~[axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.SimpleCommandBus.handle(SimpleCommandBus.java:156) [axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.SimpleCommandBus.doDispatch(SimpleCommandBus.java:127) [axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:91) [axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.gateway.AbstractCommandGateway.send(AbstractCommandGateway.java:79) [axon-core-3.1.2.jar!/:3.1.2]\n        at org.axonframework.commandhandling.gateway.DefaultCommandGateway.send(DefaultCommandGateway.java:95) [axon-core-3.1.2.jar!/:3.1.2]\n        at daggerok.chat.ChatCommandsResource.leaveRoom(ChatCommandsResource.java:40) [classes!/:0.0.1]\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_152]\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_152]\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_152]\n        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_152]\n        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:894) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at javax.servlet.http.HttpServlet.service(HttpServlet.java:667) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.5.10.RELEASE.jar!/:1.5.10.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) [spring-boot-actuator-1.5.10.RELEASE.jar!/:1.5.10.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) [spring-boot-actuator-1.5.10.RELEASE.jar!/:1.5.10.RELEASE]\n        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]\n        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_152]\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_152]\n        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.27.jar!/:8.5.27]\n        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_152]\n\n# and valery is still online\nhttp :8080/api/member\n{\n    \"content\": [\n        {\n            \"memberId\": \"max\",\n            \"online\": false\n        },\n        {\n            \"memberId\": \"valery\",\n            \"online\": true\n        }\n    ]\n}\n----\n\n.otherwise, if I'm disabling snapshots everything is working fine..\n----\n# copy config without snapshotter\ncp -Rf src/main/java/daggerok/chat/AxonConfig.kt-wo-shapshotter src/main/java/daggerok/chat/AxonConfig.kt\n\n./gradlew\njava -jar build/libs/*jar\n\nhttp :8080/api/room roomId=my-room\nhttp put :8080/api/room/my-room/max\nhttp put :8080/api/room/my-room/valery\nhttp delete :8080/api/room/my-room/max\nhttp delete :8080/api/room/my-room/valery\nhttp :8080/api/member\n\nhttp :8080/api/member\n{\n    \"content\": [\n        {\n            \"memberId\": \"max\",\n            \"online\": false\n        },\n        {\n            \"memberId\": \"valery\",\n            \"online\": false\n        }\n    ],\n}\n----\n\n.fix snapshotter solution\n----\n# copy config without snapshotter\ncp -Rf src/main/java/daggerok/chat/AxonConfig.kt-fix-snapshotter src/main/java/daggerok/chat/AxonConfig.kt\n\n./gradlew\njava -jar build/libs/*jar\n\nhttp :8080/api/room roomId=my-room\nhttp put :8080/api/room/my-room/max\nhttp put :8080/api/room/my-room/valery\nhttp delete :8080/api/room/my-room/max\nhttp delete :8080/api/room/my-room/valery\nhttp :8080/api/member/room/my-room\n\nhttp :8080/api/member/room/my-room\n{\n    \"content\": [\n        {\n            \"memberId\": \"max\",\n            \"online\": false\n        },\n        {\n            \"memberId\": \"valery\",\n            \"online\": false\n        }\n    ],\n}\n----\n\nlinks:\n\n. link:https://groups.google.com/forum/#!topic/axonframework/OCE6kEotDmQ[According question in Axon google group]\n. link:https://www.youtube.com/watch?v=IhLSwCRyrcw[Live coding building and distributing an Axon 3 based application]\n. link:https://github.com/AxonIQ/axon-quick-start/tree/solution[GIthub: AxonIQ/axon-quick-start]\n\n//end::content[]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaggerok%2Faxon-snapshots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaggerok%2Faxon-snapshots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaggerok%2Faxon-snapshots/lists"}