Quick start
This walks from a fresh install to a message round-trip on both surfaces.
1. Install and finish setup
curl -fsSL https://apt.xcon-q.com/install.sh | sudo sh
Open the wizard (http://<server-ip>:9080/?key=<setup-key>), point it at your
xcon-db engine, and set the admin login.
2. Create a token and a topic
From the broker shell:
# a data-plane bearer token for the "main" vhost (prints once)
xcon-quee -config /etc/xcon-quee/xcon-quee.json create-token app "*"
# a topic (queue) with 7-day retention
xcon-quee -config /etc/xcon-quee/xcon-quee.json create-topic main jobs 7
3a. Native SDK (Go)
c := quee.New("http://localhost:9080", token)
// publish — durable on return
c.Publish(ctx, "main", "jobs", quee.Message{Body: []byte("hello"), IdemKey: "1"})
// subscribe — competing consumers, auto-credit, auto-ack on handler success
c.Subscribe(ctx, "main", "jobs", "workers",
quee.SubOptions{Create: true, Start: "earliest"},
func(d *quee.Delivery) error {
fmt.Println(string(d.Body))
return nil // nil = ack, error = nack
})
3b. AMQP (any standard client)
The same topic is a normal AMQP queue. With Python's pika:
import pika
creds = pika.PlainCredentials("quee", TOKEN) # password = the bearer token
conn = pika.BlockingConnection(pika.ConnectionParameters("SERVER", 5672, "/", creds))
ch = conn.channel()
ch.queue_declare(queue="jobs", durable=True)
ch.basic_publish(exchange="", routing_key="jobs", body=b"hello")
for method, props, body in ch.consume("jobs"):
print(body)
ch.basic_ack(method.delivery_tag)
A message published by either surface is consumed by the other — they are one log. See Cross-protocol.