{"id":23209,"date":"2026-05-17T05:52:44","date_gmt":"2026-05-17T03:52:44","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=23209"},"modified":"2026-05-16T08:58:52","modified_gmt":"2026-05-16T06:58:52","slug":"spring-boot-vs-quarkus-am-beispiel-von-stomp","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=23209","title":{"rendered":"Spring Boot vs. Quarkus am Beispiel von STOMP"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/05\/spring-boot-quarkus.png\" alt=\"STOMP\" width=\"1055\" height=\"1491\"  \/><\/p>\n<p>STOMP-Push an alle Browser-Clients ist ein Verfahren, bei dem ein Server \u00fcber eine bestehende WebSocket-Verbindung Nachrichten an alle verbundenen Browser gleichzeitig sendet \u2013 \u00e4hnlich wie eine Durchsage in einem Flughafen, die alle h\u00f6ren. <!--more--><\/p>\n<p>In Java Spring Boot wird das typischerweise mit \u2009<strong>@MessageMapping<\/strong>\u2009 und \u2009<strong>SimpMessagingTemplate<\/strong>\u2009 umgesetzt, wobei \u2009<strong>convertAndSend(&#8222;\/topic\/global&#8220;, nachricht)<\/strong>\u2009 alle Clients erreicht.<\/p>\n<p>Das ist lesbar, einfach zu debuggen und funktioniert in allen modernen Browsern ohne Flash oder Plug-ins.<\/p>\n<p><strong>Wichtige Merkmale<\/strong>:<\/p>\n<p>&#8211; \/topic\/ = Publish\/Subscribe: Alle Empf\u00e4nger bekommen dieselbe Nachricht (Broadcast)<\/p>\n<p>&#8211; \/queue\/ = Punkt-zu-Punkt: Nur ein Empf\u00e4nger bekommt die Nachricht (nicht f\u00fcr \u201ean alle\u201d)<\/p>\n<p>&#8211; Die Verbindung bleibt offen \u2192 keine st\u00e4ndigen HTTP-Requests n\u00f6tig (kein Polling)<\/p>\n<p>&#8211; STOMP ist ein einfaches Text-Protokoll \u00fcber WebSocket, das leicht zu implementieren ist<\/p>\n<p><strong>So funktioniert\u2019s<\/strong>:<\/p>\n<p>1.\tStarte die Spring Boot App \u2192 Server l\u00e4uft auf \u2009http:\/\/localhost:8080\u2009<br \/>\n2.\t\u00d6ffne mehrere Browser-Tabs mit \u2009http:\/\/localhost:8080\/index.html\u2009<br \/>\n3.\tKlicke auf \u201cNachricht senden\u201d in einem Tab<br \/>\n4.\tAlle Tabs erhalten sofort die Nachricht \u201cNachricht an alle Browser!\u201d<\/p>\n<p>Das ist die minimalste funktionierende <a href=\"https:\/\/gitlab.com\/IT-Berater\/stomp\" target=\"_blank\">Demo f\u00fcr STOMP-Broadcast<\/a> an alle Clients.<\/p>\n<p><strong>Spring Boot vs. Quarkus<\/strong><\/p>\n<p>F\u00fcr die STOMP-Demo ist Spring Boot besser, weil:<\/p>\n<p>&#8211; STOMP native Unterst\u00fctzung hat (kein manueller Parser)<\/p>\n<p>&#8211; Nur ca. 3 Zeilen Broadcast impl.<\/p>\n<p>&#8211; Keine WebSocket-Boilerplate n\u00f6tig ist<\/p>\n<p>&#8211; Als Java\/Spring-Entwickler man schon das \u00d6kosystem kennt<\/p>\n<p><strong>Quarkus lohnt sich erst, wenn:<\/strong><\/p>\n<p>Du viele Microservices mit schnellem Scaling hast<\/p>\n<p>&#8211; Serverless\/Container-Umgebung mit Cold-Start-Constraints<\/p>\n<p>&#8211; Speicher extrem limitiert ist<\/p>\n<p>&#8211; Du keine STOMP-Bibliotheken brauchst (eigener Protokoll-Stack)<\/p>\n<p>Beide sind valide \u2013 die Wahl h\u00e4ngt von deinen spezifischen Anforderungen, nicht von besser\/schlechter ab.<\/p>\n<p>Der Code, d.h. die zwei Klassen f\u00fcr die STOMP-Demo sind in meinem <a href=\"https:\/\/gitlab.com\/IT-Berater\/stomp\" target=\"_blank\">Git-Repo <\/a>zu finden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>STOMP-Push an alle Browser-Clients ist ein Verfahren, bei dem ein Server \u00fcber eine bestehende WebSocket-Verbindung Nachrichten an alle verbundenen Browser gleichzeitig sendet \u2013 \u00e4hnlich wie eine Durchsage in einem Flughafen, die alle h\u00f6ren.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,5,6180,3163],"tags":[112,3764,3273,6309],"class_list":["post-23209","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-java-21","category-maven","tag-beispiel","tag-quarkus","tag-spring-boot","tag-stomp"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23209"}],"version-history":[{"count":3,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23209\/revisions"}],"predecessor-version":[{"id":23212,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23209\/revisions\/23212"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23209"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}