Entwurf: RabbitMQ-basierte PhoreMQ-API mit Docker-Setup - #1
Open
dermatthes wants to merge 16 commits into
Open
dermatthes wants to merge 16 commits into
dermatthes wants to merge 16 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dieser PR entwirft PhoreMQ als PHP-Zugriffsschicht für RabbitMQ. Architekturentscheidung: zunächst genau ein RabbitMQConnector hinter ConnectorInterface; keine Adapterregistrierung, Brokerauswahl oder Fallback-Logik. Öffentliche Begriffe bleiben Namespace, Topic, Subscription und Nachrichtentyp.
Status: Die PhoreMQ-PHP-Laufzeit ist weiterhin nur Entwurf. Docker-/PHP-Dateien sind eigenständige Entwicklungswerkzeuge; Composer verlangt PHP >=8.5; die MQ-Laufzeit wird noch nicht implementiert. AGENTS.md legt PHP >=8.5 und PHP für alle ausführbaren Beispiele und Setup-Skripte fest. Ein einzelner Docker-Knoten bietet keine Ausfallredundanz; bekannte Demo-Credentials und unsigned sind ausdrücklich nur für lokale Entwicklung.
Validierung dieser Revision: Composer-Mindestversion, relative Links, PHP-Klammerstruktur, Entfernung des bisherigen Setup-Skripts, git diff --check und tatsächlicher Commit-Umfang geprüft. PHP-Lint, Dry-Run-Ausführung und Docker-Integration wurden mangels PHP/Docker nicht ausgeführt. Die zuvor ausgeführten Prüfungen des alten Skripts sind kein Laufzeitnachweis für die PHP-Portierung. Das vorbestehend geänderte Skill-Submodul ist nicht Bestandteil des Commits.
Ergänzung: autoCreate provisioniert fachliche Topologie ausschließlich beim Registrieren von Listenern. Publisher legen keine Topics/Subscriptions an; QueueConfigurationMissingException meldet TOPIC_MISSING oder NO_MATCHING_SUBSCRIPTION direkt beim Senden. Rechte-/Transportfehler und vorhandene Queues ohne aktive Worker sind davon getrennt. PHP-Beispiel und Setup-Guide ergänzt; weiterhin API-Entwurf.
Aktualisierung: QueueOptions mit Work/RPC/Broadcast-Profilen, globalen Defaults, DTO-Attributen und detaillierten Konflikt-Exceptions. Eine separate retryPolicy und feste gemeinsame RPC-Reply-Queues entfallen. Beispiel 05 erklärt Rückkanal-Anlage vor Publish, Zuordnung mehrerer Publisher, automatisches Entfernen bei Connection-Ende, Container-Neustarts, verlorene Antworten, Timeouts und persistente Idempotenz. Beispiel 11 zeigt programmatische und attributbasierte Optionen. Bestehende Queue-Eigenschaften werden nicht automatisch migriert; die atomare Persistenz des vollständigen Library-Contracts ist als offene Implementierungsentscheidung benannt.
Prüfung dieser Aktualisierung: statische PHP-Klammerprüfung, lokale Dokumentlinks, git diff --check und tatsächlicher Commit-Dateiumfang erfolgreich. PHP-Lint und Docker-Ausführung weiterhin mangels Laufzeit nicht möglich. Keine MQ-Runtime implementiert.
Deployment-Ergänzung: compose.internal.yaml startet RabbitMQ 4.3 ohne Management-Plugin, mit internem Compose-Netz, persistentem Volume und automatischer Erstinitialisierung. compose.anonymous.yaml aktiviert optional SASL ANONYMOUS ohne Credentials im AMQP-Client; intern wird ein konfigurierter Benutzer verwendet. HOWTO.md erklärt Integration bestehender Dienste, DEFAULT_VHOST, Netzwerk-/Portgrenzen und Neustarts. Keine Host-Ports veröffentlicht. Die fehlende Kompatibilität dieser API-losen Variante mit der bisherigen vollständigen PhoreMQ-Topologieprüfung sowie der noch nicht definierte ANONYMOUS-Modus im Library-Client sind ausdrücklich dokumentiert. YAML, Links und Diff geprüft; Docker-Lauf mangels Docker nicht ausgeführt.
Vereinfachung: Anmeldung jetzt vollständig über RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS in Compose konfiguriert. internal.conf und anonymous.conf entfernt; kein erweitertes Image erforderlich. HOWTO zeigt auch den vollständigen Environment-Block zum Übernehmen in eine einzelne Compose-Datei. YAML/Parameter und Diff statisch geprüft; kein Docker-Lauf verfügbar.
API-Review aus Nutzer- und Erst-Reviewerperspektive: alle elf PHP-Beispiele durchgegangen und als konkrete Anwendungseinstiege überarbeitet. Neuer Beispielindex mit Reihenfolge, Zuständigkeiten und Review-Ergebnis je Datei. Sender/Worker im Kurzüberblick getrennt; request unterstützt DTOs und verwendet dieselben PublishOptions wie publish. RequestOptions entfällt; replyTimeoutSeconds steht vor dem Versand, AwaitOptions ausschließlich beim lokalen Warten. Reine Events setzen reply:false explizit. RPC zeigt kurze Hauptpfade sowie eigene Varianten für Notices, Remote-Exceptions, erneutes Warten und lokale Ergebnis-DTOs. Login führt einen gezielten Check aus; Batch-RPC behandelt Fehler je bereits gesendetem Auftrag. cancel/stop/close und Besitz injizierter Connections sind präzisiert. Weiterhin keine Runtime-Implementierung.
Validierung des API-Reviews: statische PHP-Klammer-/Importprüfung, Dokumentlinks, Codeblock-Paare, eindeutige Paragraphen, Entfernung alter RequestOptions-Aufrufe und Commit-Dateiumfang geprüft. PHP-Lint und MQ-Integration nicht ausführbar; PHP/Docker und MQ-Runtime fehlen.