Skip to content

Entwurf: RabbitMQ-basierte PhoreMQ-API mit Docker-Setup - #1

Open
dermatthes wants to merge 16 commits into
mainfrom
docs/message-queue-api
Open

dermatthes wants to merge 16 commits into
mainfrom
docs/message-queue-api

Conversation

@dermatthes

@dermatthes dermatthes commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

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.

  • Kleine API: publish sendet sofort; optionales await wartet und wirft bei Timeout eine Exception. subscribe/respond registrieren Handler, run verarbeitet Zustellungen, check prüft Verbindung und Dienstbereitschaft.
  • Elf PHP-Beispiele für Konstruktor/Factory, programmatische und attributbasierte DTO-Zuordnung, strukturelle phore/schema-Hydration, Dateireferenzen, RPC und Remote-Exceptions, Middleware, Broadcast, konkurrierende Worker, Health und Callback-Fehler.
  • Gemeinsame config/message-queue.json und Beispiel-Bootstrap; Verbindungskonfiguration wird nicht in jedem Beispiel wiederholt.
  • Docker Compose startet einen RabbitMQ-4.3-Management-Knoten mit Loopback-Ports und temporär nutzbarem Volume. setup.php richtet aus neutralen Topologiebegriffen Exchanges, Quorum Queues, Bindings und Fehlerqueues ein; mit Dry Run, Konfliktprüfung und ohne Ressourcenlöschung.
  • Setup-Guide erklärt Start, Zugang, Neustart/Bereinigung, Topics und Subjects, dynamische Deklaration gegenüber Vorab-Provisionierung sowie Grenzen des Entwicklungsskripts.
  • Proposal und Basics beschreiben ausschließlich den RabbitMQ-Ansatz. Frühere andere Broker und lokale Queue-Implementierungen sowie Cursor/Replay-/Lease-Verlängerungsoptionen wurden entfernt. RPC-Zuordnung, Idempotenz und Grenzen einmaliger fachlicher Wirkung bleiben erklärt.

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.

@dermatthes dermatthes changed the title Entwurf: universelle Message-Queue-API mit Redis und PHP-Beispielen Entwurf: kleine Message-Queue-API mit Redis, RPC und Middleware Sep 12, 2026
@dermatthes dermatthes changed the title Entwurf: kleine Message-Queue-API mit Redis, RPC und Middleware Entwurf: kleine Message-Queue-API mit RPC, Broadcast und Worker-Gruppen Sep 12, 2026
@dermatthes dermatthes changed the title Entwurf: kleine Message-Queue-API mit RPC, Broadcast und Worker-Gruppen Entwurf: RabbitMQ-basierte PhoreMQ-API mit Docker-Setup Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant