Änderungen von Dokument NATS - Technisches Setup
Zuletzt geändert von Daniel Herrmann am 2025/12/14 16:20
Von Version
6.1
bearbeitet von Daniel Herrmann
am 2025/09/08 22:55
am 2025/09/08 22:55
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version
8.1
bearbeitet von Daniel Herrmann
am 2025/09/09 22:59
am 2025/09/09 22:59
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
Details
- 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:
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -20781467 31 +207814677 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/20781467 3/NATS Setup1 +https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/207814677/NATS Setup