-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdependency-injection-example.yaml
More file actions
151 lines (128 loc) · 2.99 KB
/
dependency-injection-example.yaml
File metadata and controls
151 lines (128 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
requires:
plugins:
- name: messaging
- name: modular-compat
- name: observability
- name: workflow-plugin-http
modules:
# Core services
- name: config-provider
type: static.fileserver
config:
root: "."
- name: logger-service
type: log.collector
config:
level: "info"
format: "json"
- name: metrics-service
type: metrics.collector
config:
collectInterval: 10
# Data services
- name: cache-service
type: cache.modular
config:
backend: "memory"
maxSize: 1000
dependsOn:
- config-provider
- logger-service
- name: database-service
type: database.workflow
config:
driver: "sqlite"
dsn: ":memory:"
dependsOn:
- config-provider
- logger-service
# Business logic services
- name: user-service
type: http.handler
dependsOn:
- database-service
- cache-service
- logger-service
- name: product-service
type: http.handler
dependsOn:
- database-service
- cache-service
- logger-service
- name: order-service
type: http.handler
dependsOn:
- database-service
- cache-service
- user-service
- product-service
- logger-service
# External interfaces
- name: http-server
type: http.server
config:
address: ":8080"
dependsOn:
- config-provider
- logger-service
- metrics-service
- name: grpc-server
type: http.server # Originally grpc.server - using HTTP as gRPC is not yet supported
config:
address: ":9090"
dependsOn:
- config-provider
- logger-service
- metrics-service
# API Components
- name: http-router
type: http.router
dependsOn:
- http-server
- name: user-http-handler
type: http.handler
dependsOn:
- user-service
- logger-service
- name: product-http-handler
type: http.handler
dependsOn:
- product-service
- logger-service
- name: order-http-handler
type: http.handler
dependsOn:
- order-service
- logger-service
# Messaging infrastructure
- name: message-broker
type: messaging.broker
# Event handlers for messaging subscriptions
- name: audit-handler
type: messaging.handler
config:
description: "Handles audit logging for events"
- name: notification-handler
type: messaging.handler
config:
description: "Handles notification delivery for events"
workflows:
http:
routes:
- method: GET
path: /api/users
handler: user-http-handler
- method: GET
path: /api/products
handler: product-http-handler
- method: GET
path: /api/orders
handler: order-http-handler
messaging:
subscriptions:
- topic: users-events
handler: audit-handler
- topic: users-events
handler: notification-handler
- topic: products-events
handler: audit-handler