Round 279: Kafka ext, RabbitMQ ext, NATS ext, Pulsar ext, ZeroMQ ext (20 commands)

ober

be5293080ece0dd6abf4eede9ae913b80c22cb05

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 3299a42..090b055 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 279 — Kafka ext, RabbitMQ ext, NATS ext, Pulsar ext, ZeroMQ ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| kafka-produce | :orange_circle: | Produce to Kafka topic |
+| kafka-consume | :orange_circle: | Consume from Kafka topic |
+| kafka-topics | :orange_circle: | List Kafka topics |
+| kafka-consumer-groups | :orange_circle: | List Kafka consumer groups |
+| rabbitmq-publish | :orange_circle: | Publish to RabbitMQ queue |
+| rabbitmq-consume | :orange_circle: | Consume from RabbitMQ queue |
+| rabbitmq-queues | :orange_circle: | List RabbitMQ queues |
+| rabbitmq-exchanges | :orange_circle: | List RabbitMQ exchanges |
+| nats-publish | :orange_circle: | Publish to NATS subject |
+| nats-subscribe | :orange_circle: | Subscribe to NATS subject |
+| nats-streams | :orange_circle: | List NATS streams |
+| nats-consumers | :orange_circle: | List NATS consumers |
+| pulsar-produce | :orange_circle: | Produce to Pulsar topic |
+| pulsar-consume | :orange_circle: | Consume from Pulsar topic |
+| pulsar-topics | :orange_circle: | List Pulsar topics |
+| pulsar-subscriptions | :orange_circle: | List Pulsar subscriptions |
+| zeromq-send | :orange_circle: | Send ZeroMQ message |
+| zeromq-receive | :orange_circle: | Receive ZeroMQ message |
+| zeromq-monitor | :orange_circle: | Monitor ZeroMQ socket |
+| zeromq-proxy | :orange_circle: | Start ZeroMQ proxy |
+
 ### Round 278 — Neo4j ext, InfluxDB ext, TimescaleDB ext, CockroachDB ext, DynamoDB ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 43e0111..f105224 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -21837,4 +21837,50 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Table: "
       (lambda (tbl)
-        (echo-message! echo (str "DynamoDB: describing " tbl))))))
\ No newline at end of file
+        (echo-message! echo (str "DynamoDB: describing " tbl))))))
+
+;;; Round 279 — NATS ext, Pulsar ext, ZeroMQ ext (batch 2)
+
+(def (cmd-nats-streams app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NATS: listing streams")))
+
+(def (cmd-nats-consumers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NATS: listing consumers")))
+
+(def (cmd-pulsar-produce app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Pulsar: producing to " topic))))))
+
+(def (cmd-pulsar-consume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Pulsar: consuming from " topic))))))
+
+(def (cmd-pulsar-topics app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pulsar: listing topics")))
+
+(def (cmd-pulsar-subscriptions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Pulsar: listing subscriptions")))
+
+(def (cmd-zeromq-send app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ZeroMQ: sending message")))
+
+(def (cmd-zeromq-receive app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ZeroMQ: receiving message")))
+
+(def (cmd-zeromq-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ZeroMQ: monitoring socket")))
+
+(def (cmd-zeromq-proxy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ZeroMQ: starting proxy")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 654a3af..c9a2a3f 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -22466,3 +22466,57 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "TimescaleDB: listing hypertables")))
 
+;;; Round 279 — Kafka ext, RabbitMQ ext, NATS ext, Pulsar ext, ZeroMQ ext (batch 1)
+
+(def (cmd-kafka-produce app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Kafka: producing to " topic))))))
+
+(def (cmd-kafka-consume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Kafka: consuming from " topic))))))
+
+(def (cmd-kafka-topics app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kafka: listing topics")))
+
+(def (cmd-kafka-consumer-groups app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kafka: listing consumer groups")))
+
+(def (cmd-rabbitmq-publish app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Queue: "
+      (lambda (queue)
+        (echo-message! echo (str "RabbitMQ: publishing to " queue))))))
+
+(def (cmd-rabbitmq-consume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Queue: "
+      (lambda (queue)
+        (echo-message! echo (str "RabbitMQ: consuming from " queue))))))
+
+(def (cmd-rabbitmq-queues app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing queues")))
+
+(def (cmd-rabbitmq-exchanges app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing exchanges")))
+
+(def (cmd-nats-publish app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Subject: "
+      (lambda (subj)
+        (echo-message! echo (str "NATS: publishing to " subj))))))
+
+(def (cmd-nats-subscribe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Subject: "
+      (lambda (subj)
+        (echo-message! echo (str "NATS: subscribing to " subj))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 96bd44b..32c881a 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7276,4 +7276,25 @@
   (register-command! 'dynamodb-query cmd-dynamodb-query)
   (register-command! 'dynamodb-tables cmd-dynamodb-tables)
   (register-command! 'dynamodb-describe cmd-dynamodb-describe)
+  ;; Round 279
+  (register-command! 'kafka-produce cmd-kafka-produce)
+  (register-command! 'kafka-consume cmd-kafka-consume)
+  (register-command! 'kafka-topics cmd-kafka-topics)
+  (register-command! 'kafka-consumer-groups cmd-kafka-consumer-groups)
+  (register-command! 'rabbitmq-publish cmd-rabbitmq-publish)
+  (register-command! 'rabbitmq-consume cmd-rabbitmq-consume)
+  (register-command! 'rabbitmq-queues cmd-rabbitmq-queues)
+  (register-command! 'rabbitmq-exchanges cmd-rabbitmq-exchanges)
+  (register-command! 'nats-publish cmd-nats-publish)
+  (register-command! 'nats-subscribe cmd-nats-subscribe)
+  (register-command! 'nats-streams cmd-nats-streams)
+  (register-command! 'nats-consumers cmd-nats-consumers)
+  (register-command! 'pulsar-produce cmd-pulsar-produce)
+  (register-command! 'pulsar-consume cmd-pulsar-consume)
+  (register-command! 'pulsar-topics cmd-pulsar-topics)
+  (register-command! 'pulsar-subscriptions cmd-pulsar-subscriptions)
+  (register-command! 'zeromq-send cmd-zeromq-send)
+  (register-command! 'zeromq-receive cmd-zeromq-receive)
+  (register-command! 'zeromq-monitor cmd-zeromq-monitor)
+  (register-command! 'zeromq-proxy cmd-zeromq-proxy)
 )