Round 368: MQTT ext, AMQP ext, NSQ ext, RabbitMQ/ActiveMQ ext (20 commands)

ober

c6480958d1b1f7f133f420cdf7c9bf5b9a6e40e6

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 930eef7..56def1e 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 368 — MQTT ext, AMQP ext, NSQ ext, RabbitMQ/ActiveMQ ext
+
+| Feature | Emacs | jemacs | Status |
+|---|---|---|---|
+| MQTT retained messages | — | `mqtt-retain` | :orange_circle: Scaffolded |
+| MQTT last will config | — | `mqtt-will` | :orange_circle: Scaffolded |
+| MQTT QoS level | — | `mqtt-qos` | :orange_circle: Scaffolded |
+| MQTT bridge config | — | `mqtt-bridge` | :orange_circle: Scaffolded |
+| AMQP publish | — | `amqp-publish` | :orange_circle: Scaffolded |
+| AMQP consume | — | `amqp-consume` | :orange_circle: Scaffolded |
+| AMQP declare queue | — | `amqp-declare` | :orange_circle: Scaffolded |
+| AMQP bind queue | — | `amqp-bind` | :orange_circle: Scaffolded |
+| Pulsar functions | — | `pulsar-functions` | :orange_circle: Scaffolded |
+| Pulsar sinks | — | `pulsar-sinks` | :orange_circle: Scaffolded |
+| NSQ publish | — | `nsq-publish` | :orange_circle: Scaffolded |
+| NSQ consume | — | `nsq-consume` | :orange_circle: Scaffolded |
+| NSQ list topics | — | `nsq-topics` | :orange_circle: Scaffolded |
+| NSQ list channels | — | `nsq-channels` | :orange_circle: Scaffolded |
+| RabbitMQ bindings | — | `rabbitmq-bindings` | :orange_circle: Scaffolded |
+| RabbitMQ shovel | — | `rabbitmq-shovel` | :orange_circle: Scaffolded |
+| RabbitMQ federation | — | `rabbitmq-federation` | :orange_circle: Scaffolded |
+| RabbitMQ tracing | — | `rabbitmq-trace` | :orange_circle: Scaffolded |
+| ActiveMQ queues | — | `activemq-queues` | :orange_circle: Scaffolded |
+| ActiveMQ topics | — | `activemq-topics` | :orange_circle: Scaffolded |
+
 ### Round 367 — OAuth ext, SAML ext, OIDC ext, Kerberos/PAM/NTLM ext
 
 | Feature | Emacs | jemacs | Status |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 809c663..bb072b1 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -26372,3 +26372,46 @@
 (def (cmd-radius-status app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "RADIUS: checking server status")))
+
+;; Round 368 batch 2 — NSQ ext, RabbitMQ/ActiveMQ ext
+(def (cmd-nsq-publish app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "NSQ topic: "
+      (lambda (topic)
+        (echo-message! echo (str "NSQ: publishing to " topic))))))
+
+(def (cmd-nsq-consume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NSQ: consuming messages")))
+
+(def (cmd-nsq-topics app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NSQ: listing topics")))
+
+(def (cmd-nsq-channels app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NSQ: listing channels")))
+
+(def (cmd-rabbitmq-bindings app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing bindings")))
+
+(def (cmd-rabbitmq-shovel app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: managing shovel")))
+
+(def (cmd-rabbitmq-federation app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: managing federation")))
+
+(def (cmd-rabbitmq-trace app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: enabling message tracing")))
+
+(def (cmd-activemq-queues app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ActiveMQ: listing queues")))
+
+(def (cmd-activemq-topics app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ActiveMQ: listing topics")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 8934bee..48d2bd3 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -27135,3 +27135,48 @@
 (def (cmd-oidc-userinfo app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "OIDC: fetching userinfo")))
+
+;; Round 368 batch 1 — MQTT ext, AMQP ext
+(def (cmd-mqtt-retain app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MQTT: managing retained messages")))
+
+(def (cmd-mqtt-will app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MQTT: configuring last will and testament")))
+
+(def (cmd-mqtt-qos app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MQTT: setting QoS level")))
+
+(def (cmd-mqtt-bridge app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MQTT: configuring bridge connection")))
+
+(def (cmd-amqp-publish app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Exchange/routing-key: "
+      (lambda (target)
+        (echo-message! echo (str "AMQP: publishing to " target))))))
+
+(def (cmd-amqp-consume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Queue name: "
+      (lambda (queue)
+        (echo-message! echo (str "AMQP: consuming from " queue))))))
+
+(def (cmd-amqp-declare app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "AMQP: declaring queue/exchange")))
+
+(def (cmd-amqp-bind app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "AMQP: binding queue to exchange")))
+
+(def (cmd-pulsar-functions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pulsar: listing functions")))
+
+(def (cmd-pulsar-sinks app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pulsar: listing sinks")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 4881876..03e75b8 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -9178,4 +9178,26 @@
   (register-command! 'radius-auth cmd-radius-auth)
   (register-command! 'radius-acct cmd-radius-acct)
   (register-command! 'radius-status cmd-radius-status)
+
+  ;; Round 368 — MQTT ext, AMQP ext, NSQ ext, RabbitMQ/ActiveMQ ext
+  (register-command! 'mqtt-retain cmd-mqtt-retain)
+  (register-command! 'mqtt-will cmd-mqtt-will)
+  (register-command! 'mqtt-qos cmd-mqtt-qos)
+  (register-command! 'mqtt-bridge cmd-mqtt-bridge)
+  (register-command! 'amqp-publish cmd-amqp-publish)
+  (register-command! 'amqp-consume cmd-amqp-consume)
+  (register-command! 'amqp-declare cmd-amqp-declare)
+  (register-command! 'amqp-bind cmd-amqp-bind)
+  (register-command! 'pulsar-functions cmd-pulsar-functions)
+  (register-command! 'pulsar-sinks cmd-pulsar-sinks)
+  (register-command! 'nsq-publish cmd-nsq-publish)
+  (register-command! 'nsq-consume cmd-nsq-consume)
+  (register-command! 'nsq-topics cmd-nsq-topics)
+  (register-command! 'nsq-channels cmd-nsq-channels)
+  (register-command! 'rabbitmq-bindings cmd-rabbitmq-bindings)
+  (register-command! 'rabbitmq-shovel cmd-rabbitmq-shovel)
+  (register-command! 'rabbitmq-federation cmd-rabbitmq-federation)
+  (register-command! 'rabbitmq-trace cmd-rabbitmq-trace)
+  (register-command! 'activemq-queues cmd-activemq-queues)
+  (register-command! 'activemq-topics cmd-activemq-topics)
 )