@eventmodelers/cli 1.0.17 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/stacks/axon/templates/root/src/main/java/io/axoniq/quickstart/QuickstartApplication.java
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
package io.axoniq.quickstart;
|
|
2
2
|
|
|
3
|
-
import io.axoniq.quickstart.giftcard.domain.GiftCard;
|
|
4
3
|
import org.axonframework.messaging.eventhandling.processing.streaming.token.store.TokenStore;
|
|
5
4
|
import org.axonframework.messaging.eventhandling.processing.streaming.token.store.inmemory.InMemoryTokenStore;
|
|
6
5
|
import org.springframework.boot.SpringApplication;
|
|
@@ -8,115 +7,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
|
8
7
|
import org.springframework.context.annotation.Bean;
|
|
9
8
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
10
9
|
|
|
11
|
-
/**
|
|
12
|
-
* Main entry point for the Axoniq Platform Quickstart application.
|
|
13
|
-
*
|
|
14
|
-
* <p>This Spring Boot application demonstrates a complete CQRS/Event Sourcing implementation
|
|
15
|
-
* using Axon Framework and Axon Server, showcasing best practices for building reactive,
|
|
16
|
-
* scalable applications with event-driven architecture.</p>
|
|
17
|
-
*
|
|
18
|
-
* <p><strong>Architecture Overview:</strong></p>
|
|
19
|
-
* <ul>
|
|
20
|
-
* <li><strong>CQRS Implementation</strong>: Separates command and query responsibilities</li>
|
|
21
|
-
* <li><strong>Event Sourcing</strong>: Stores state changes as immutable events</li>
|
|
22
|
-
* <li><strong>Reactive Web Stack</strong>: Uses Spring WebFlux for non-blocking I/O</li>
|
|
23
|
-
* <li><strong>Real-time Updates</strong>: Implements Server-Sent Events for live UI updates</li>
|
|
24
|
-
* <li><strong>In-Memory Projections</strong>: Fast query performance with eventual consistency</li>
|
|
25
|
-
* </ul>
|
|
26
|
-
*
|
|
27
|
-
* <p><strong>Key Components Enabled:</strong></p>
|
|
28
|
-
* <ul>
|
|
29
|
-
* <li><strong>{@code @SpringBootApplication}</strong>: Enables auto-configuration, component scanning, and configuration properties</li>
|
|
30
|
-
* <li><strong>{@code @EnableScheduling}</strong>: Activates scheduled task execution for the {@link io.axoniq.quickstart.giftcard.scheduler.GiftCardScheduler}</li>
|
|
31
|
-
* </ul>
|
|
32
|
-
*
|
|
33
|
-
* <p><strong>Domain Model:</strong></p>
|
|
34
|
-
* <p>The application centers around a Gift Card domain implementing:</p>
|
|
35
|
-
* <ul>
|
|
36
|
-
* <li><strong>EventSourced DCB Model</strong>: {@link GiftCard} - Core business logic and state</li>
|
|
37
|
-
* <li><strong>Commands</strong>: Issue and redeem operations with business validation</li>
|
|
38
|
-
* <li><strong>Events</strong>: Immutable facts about gift card lifecycle changes</li>
|
|
39
|
-
* <li><strong>Queries</strong>: Read operations with subscription query support</li>
|
|
40
|
-
* <li><strong>Projections</strong>: Denormalized read models for efficient querying</li>
|
|
41
|
-
* </ul>
|
|
42
|
-
*
|
|
43
|
-
* <p><strong>Technical Stack:</strong></p>
|
|
44
|
-
* <ul>
|
|
45
|
-
* <li><strong>Axon Framework</strong>: CQRS/Event Sourcing framework</li>
|
|
46
|
-
* <li><strong>Axon Server</strong>: Event store and message routing infrastructure</li>
|
|
47
|
-
* <li><strong>Spring WebFlux</strong>: Reactive web framework with non-blocking I/O</li>
|
|
48
|
-
* <li><strong>Vue.js 3</strong>: Frontend framework with Vuetify UI components</li>
|
|
49
|
-
* <li><strong>Server-Sent Events</strong>: Real-time updates without WebSocket complexity</li>
|
|
50
|
-
* </ul>
|
|
51
|
-
*
|
|
52
|
-
* <p><strong>Educational Value:</strong></p>
|
|
53
|
-
* <p>This quickstart serves as a practical learning resource demonstrating:</p>
|
|
54
|
-
* <ul>
|
|
55
|
-
* <li>Event Sourcing patterns and practices</li>
|
|
56
|
-
* <li>CQRS implementation with separate read/write models</li>
|
|
57
|
-
* <li>Real-time web applications with reactive streams</li>
|
|
58
|
-
* <li>Integration between Axon Framework and Spring Boot</li>
|
|
59
|
-
* <li>Modern UI development with real-time data updates</li>
|
|
60
|
-
* </ul>
|
|
61
|
-
*
|
|
62
|
-
* <p><strong>Production Readiness Notes:</strong></p>
|
|
63
|
-
* <p>While this quickstart demonstrates core patterns, production deployments should consider:</p>
|
|
64
|
-
* <ul>
|
|
65
|
-
* <li>Persistent event store configuration (vs. in-memory)</li>
|
|
66
|
-
* <li>Distributed deployment strategies</li>
|
|
67
|
-
* <li>Monitoring and observability integration</li>
|
|
68
|
-
* <li>Security implementation (authentication, authorization)</li>
|
|
69
|
-
* <li>Error handling and retry mechanisms</li>
|
|
70
|
-
* <li>Performance tuning and resource optimization</li>
|
|
71
|
-
* </ul>
|
|
72
|
-
*
|
|
73
|
-
* <p><strong>Getting Started:</strong></p>
|
|
74
|
-
* <ol>
|
|
75
|
-
* <li>Ensure Axon Server is running on localhost:8124</li>
|
|
76
|
-
* <li>Run this application using Spring Boot</li>
|
|
77
|
-
* <li>Access the web interface at http://localhost:8080</li>
|
|
78
|
-
* <li>Observe real-time gift card operations via the scheduler</li>
|
|
79
|
-
* <li>Interact with the API endpoints at /api/giftcards</li>
|
|
80
|
-
* </ol>
|
|
81
|
-
*
|
|
82
|
-
* @see GiftCard
|
|
83
|
-
* @see io.axoniq.quickstart.giftcard.web.GiftCardController
|
|
84
|
-
* @see io.axoniq.quickstart.giftcard.query.GiftCardProjection
|
|
85
|
-
* @see io.axoniq.quickstart.giftcard.scheduler.GiftCardScheduler
|
|
86
|
-
* @see <a href="https://docs.axoniq.io/reference-guide/">Axon Framework Reference Guide</a>
|
|
87
|
-
*
|
|
88
|
-
* @author AxonIQ Quickstart
|
|
89
|
-
* @version 1.0
|
|
90
|
-
* @since 1.0
|
|
91
|
-
*/
|
|
92
10
|
@SpringBootApplication
|
|
93
11
|
@EnableScheduling
|
|
94
12
|
public class QuickstartApplication {
|
|
95
13
|
|
|
96
|
-
/**
|
|
97
|
-
* Application entry point that starts the Spring Boot application.
|
|
98
|
-
*
|
|
99
|
-
* <p>This method bootstraps the entire application context, including:</p>
|
|
100
|
-
* <ul>
|
|
101
|
-
* <li>Axon Framework auto-configuration</li>
|
|
102
|
-
* <li>Spring WebFlux reactive web server</li>
|
|
103
|
-
* <li>Component scanning and dependency injection</li>
|
|
104
|
-
* <li>Scheduled task initialization</li>
|
|
105
|
-
* <li>Static resource serving configuration</li>
|
|
106
|
-
* </ul>
|
|
107
|
-
*
|
|
108
|
-
* <p><strong>Startup sequence:</strong></p>
|
|
109
|
-
* <ol>
|
|
110
|
-
* <li>Spring Boot application context initialization</li>
|
|
111
|
-
* <li>Axon Server connection establishment</li>
|
|
112
|
-
* <li>Event store and command/query bus configuration</li>
|
|
113
|
-
* <li>EventSourced DCB model and projection registration</li>
|
|
114
|
-
* <li>Web server startup on port 8080</li>
|
|
115
|
-
* <li>Scheduler activation for demo operations</li>
|
|
116
|
-
* </ol>
|
|
117
|
-
*
|
|
118
|
-
* @param args command line arguments passed to the application
|
|
119
|
-
*/
|
|
120
14
|
public static void main(String[] args) {
|
|
121
15
|
SpringApplication.run(QuickstartApplication.class, args);
|
|
122
16
|
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
spring.application.name=Platform QuickStart
|
|
2
|
-
axoniq.platform.credentials=${AXONIQ_PLATFORM_CREDENTIALS}
|
|
1
|
+
spring.application.name=Platform QuickStart
|