Änderungen von Dokument NATS - Technisches Setup

Zuletzt geändert von Daniel Herrmann am 2025/12/14 16:20

Von Version Icon 6.1 Icon
bearbeitet von Daniel Herrmann
am 2025/09/08 22:55
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version Icon 8.1 Icon
bearbeitet von Daniel Herrmann
am 2025/09/09 22:59
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Icon Seiteneigenschaften
Inhalt
... ... @@ -140,8 +140,109 @@
140 140  
141 141  Consumer sind eine Auswahl / Ansicht von Teilen eines Streams. Details finden sich wieder in der NATS Dokumentation: [[https:~~/~~/docs.nats.io/nats-concepts/jetstream/consumers>>url:https://docs.nats.io/nats-concepts/jetstream/consumers||shape="rect"]]
142 142  
143 -Consumer können entweder persistent sein (dauerhaft, ein Client kann dann den bestehenden Consumer neben) oder flüchtig (ephemeral), in diesem Fall wird der Consumer beim Erstellen des Clients (beispielsweise durch N8n) angelegt. In der Regel werden Consumer durch einen Filter auf bestimmte Subjects beschränkt, diese dürfen sich nicht überschneiden.
143 +Consumer können entweder persistent sein (dauerhaft, ein Client kann dann den bestehenden Consumer neben) oder flüchtig (ephemeral), in diesem Fall wird der Consumer beim Erstellen des Clients (beispielsweise durch N8n) angelegt. In der Regel werden Consumer durch einen Filter auf bestimmte Subjects beschränkt, diese dürfen sich nicht überschneiden. Da die NATS JavaScript Client Library (die von n8n verwendet wird) es leider nicht sinnvoll erlaubt, ephemeral Consumer anzulegen verwenden wir dauerhafte Consumer-Namen.
144 144  
145 +|=(% scope="col" %)(((
146 +Backend Event
147 +)))|=(% scope="col" %)(((
148 +Consumer Name
149 +)))|=(% scope="col" %)(((
150 +Schema
151 +)))
152 +|(((
153 +{{code language="none"}}
154 +mksp.backend.briefing.offer.cancelled
155 +{{/code}}
156 +)))|(((
157 +backend_briefing_offer_cancelled
158 +)))|(((
159 +##(% class="nc" %)BriefingOfferEvent(%%)##
160 +)))
161 +|(((
162 +{{code language="none"}}
163 +mksp.backend.briefing.offer.created
164 +{{/code}}
165 +)))|(((
166 +backend_briefing_offer_created
167 +)))|(((
168 +##(% class="nc" %)BriefingOfferEvent(%%)##
169 +)))
170 +|(((
171 +##(% class="s" %)mksp.backend.briefing.offer.updated(%%)##
172 +)))|(((
173 +backend_briefing_offer_updated
174 +)))|(((
175 +##(% class="nc" %)BriefingOfferEvent(%%)##
176 +)))
177 +|(((
178 +{{code language="none"}}
179 +mksp.backend.briefing.created
180 +{{/code}}
181 +)))|(((
182 +backend_briefing_created
183 +)))|(((
184 +##(% class="n" %)BriefingEvent(%%)##
185 +)))
186 +|(((
187 +##(% class="s" %)mksp.backend.key.assigned(%%)##
188 +)))|(((
189 +backend_key_assigned
190 +)))|(((
191 +##(% class="nc" %)KeyEvent(%%)##
192 +)))
193 +|(((
194 +##(% class="s" %)mksp.backend.key.unassigned(%%)##
195 +)))|(((
196 +backend_key_unassigned
197 +)))|(((
198 +##(% class="nc" %)KeyEvent(%%)##
199 +)))
200 +|(((
201 +##(% class="s" %)mksp.backend.storage.reserved(%%)##
202 +)))|(((
203 +backend_storage_reserved
204 +)))|(((
205 +##(% class="nc" %)StorageSpaceEvent(%%)##
206 +)))
207 +|(((
208 +(% class="s" %){{code language="none"}}mksp.backend.storage.released{{/code}}
209 +)))|(((
210 +backend_storage_released
211 +)))|(((
212 +##(% class="nc" %)StorageSpaceEvent(%%)##
213 +)))
214 +|(((
215 +(% class="s" %){{code language="none"}}mksp.backend.storage.expired{{/code}}
216 +)))|(((
217 +backend_storage_expired
218 +)))|(((
219 +(% class="nc" %){{code language="none"}}StorageSpaceEvent{{/code}}
220 +)))
221 +|(((
222 +(% class="s" %){{code language="none"}}mksp.backend.user.converted_to_member{{/code}}
223 +)))|(((
224 +backend_user_converted_to_member
225 +)))|(((
226 +(% class="nc" %){{code language="none"}}UserEvent{{/code}}
227 +)))
228 +|(((
229 +(% class="s" %){{code language="none"}}mksp.backend.user.converted_to_guest{{/code}}
230 +)))|(((
231 +backend_user_converted_to_guest
232 +)))|(((
233 +(% class="nc" %){{code language="none"}}UserEvent{{/code}}
234 +)))
235 +
236 +Die Consumer können dann wie folgt angelegt werden:
237 +
238 +{{code language="json"}}
239 +$ nats consumer add backend_events <name> --pull --filter="<filter>" --defaults
240 +
241 +# Beispiel
242 +nats consumer add backend_events backend_briefing_offer_cancelled --pull --filter="mksp.backend.briefing.offer.cancelled" --defaults
243 +nats consumer add backend_events backend_key_assigned --pull --filter="mksp.backend.key.assigned" --defaults
244 +{{/code}}
245 +
145 145  = {{id name="NATSSetup-Troubleshooting"/}}Troubleshooting =
146 146  
147 147  Man kann über die NATS CLI mit dem Server interagieren.
... ... @@ -148,6 +148,8 @@
148 148  
149 149  == {{id name="NATSSetup-JetStream"/}}JetStream ==
150 150  
252 +=== {{id name="NATSSetup-Streams"/}}Streams ===
253 +
151 151  Man kann sich die vorhandenen Streams und die Anzahl der Nachrichten anschauen. Die Anzahl sollte üblicherweise 0 sein, wenn die Zahl höher ist, werden Events nicht richtig abgearbeitet.
152 152  
153 153  {{code language="shell"}}
... ... @@ -172,6 +172,58 @@
172 172  {"timestamp":"2025-09-08T09:06:00.062358","stora
173 173  {{/code}}
174 174  
278 +=== {{id name="NATSSetup-Consumer"/}}Consumer ===
279 +
280 +Die bestehenden Consumer kann man sich ebenfalls im Jetstream Context anzeigen lassen:
281 +
282 +{{code language="json"}}
283 +$ nats consumer ls backend_events
284 +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
285 +│ Consumers │
286 +├──────────────────────────────────┬─────────────┬─────────────────────┬─────────────┬─────────────┬───────────────┤
287 +│ Name │ Description │ Created │ Ack Pending │ Unprocessed │ Last Delivery │
288 +├──────────────────────────────────┼─────────────┼─────────────────────┼─────────────┼─────────────┼───────────────┤
289 +│ backend_briefing_offer_cancelled │ │ 2025-09-09 22:53:26 │ 0 │ 0 │ never │
290 +│ backend_key_assigned │ │ 2025-09-09 22:54:01 │ 0 │ 0 │ never │
291 +╰──────────────────────────────────┴─────────────┴─────────────────────┴─────────────┴─────────────┴───────────────╯
292 +{{/code}}
293 +
294 +In dieser Tabelle sieht man bereits die "unprocessed" Nachrichten, sieht also gut, wenn n8n die Nachrichten nicht korrekt verarbeitet. Man kann sich ebenfalls die Details eines Consumers anzeigen lassen:
295 +
296 +{{code language="json"}}
297 +$ nats consumer info backend_events backend_briefing_offer_cancelled
298 +
299 +Information for Consumer backend_events > backend_briefing_offer_cancelled created 2025-09-09 22:53:26
300 +
301 +Configuration:
302 +
303 + Name: backend_briefing_offer_cancelled
304 + Pull Mode: true
305 + Filter Subject: mksp.backend.briefing.offer.cancelled
306 + Deliver Policy: All
307 + Ack Policy: Explicit
308 + Ack Wait: 30.00s
309 + Replay Policy: Instant
310 + Max Ack Pending: 1,000
311 + Max Waiting Pulls: 512
312 +
313 +State:
314 +
315 + Host Version: 2.11.8
316 + Required API Level: 0 hosted at level 1
317 + Last Delivered Message: Consumer sequence: 0 Stream sequence: 10
318 + Acknowledgment Floor: Consumer sequence: 0 Stream sequence: 0
319 + Outstanding Acks: 0 out of maximum 1,000
320 + Redelivered Messages: 0
321 + Unprocessed Messages: 0
322 + Waiting Pulls: 1 of maximum 512
323 +{{/code}}
324 +
325 +Insbesondere die letzten beiden Zeilen sind wichtig:
326 +
327 +* **Unprocessed Messages** sind Nachrichten, die noch nicht abgerufen wurden. Dies sollte immer 0 sein
328 +* **Waiting Pulls**: die Anzahl der verbundenen Clients. Üblicherweise sollte das nur n8n sein, also immer 1.
329 +
175 175  == {{id name="NATSSetup-Server"/}}Server ==
176 176  
177 177  Man kann sich ebenfalls die aktiven Verbindungen anzeigen:
Icon Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -207814673
1 +207814677
URL
... ... @@ -1,1 +1,1 @@
1 -https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/207814673/NATS Setup
1 +https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/207814677/NATS Setup