Sign inSign up

sameeryadav2005/messagex-broker-v2

By sameeryadav2005

•Updated 3 days ago

Image
0

49

sameeryadav2005/messagex-broker-v2 repository overview

MessageX Logo

Self-hosted Message Broker Platform

Docker Version Protocol

⁠MessageX Broker

Repository: sameeryadav2005/messagex-broker-v2

MessageX Broker is the core messaging service of the MessageX platform. It handles client connections, message publishing, routing, queue management, consumer delivery, acknowledgements, and message recovery.

⁠Features

  • TCP-based client communication
  • Queue and exchange management
  • Direct, fanout, topic, and headers exchange support
  • Message publishing and routing
  • Consumer subscriptions
  • ACK and NACK handling
  • Requeue and delivery recovery
  • PostgreSQL-backed persistence
  • HTTP management and health API
  • Designed to work with MessageX SDKs and Dashboard

⁠Architecture

       Client Applications
      (JavaScript / Python / Java)
                  |
                  | TCP :5678
                  v
           MessageX Broker
             |         |
             |         +---- HTTP API :3000
             |
             v
          PostgreSQL
             :5432

⁠Requirements

  • Docker Engine
  • PostgreSQL 17
  • A Docker network connecting broker and database
  • Host TCP port 5678 available if remote clients need access

⁠Pull Image

docker pull sameeryadav2005/messagex-broker-v2:0.1.1

For a complete installation, use the official MessageX Launcher:

docker run -d \
  --name messagex \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v messagex_launcher_data:/data \
  sameeryadav2005/messagex-v2:0.1.8

The launcher provisions PostgreSQL, the broker, dashboard, networking, and initial administrator account.

⁠Manual Broker Setup

The broker requires PostgreSQL. The following example demonstrates the required container networking and startup sequence.

⁠1. Create a Docker network
docker network create messagex-net
⁠2. Start PostgreSQL

Use a strong password containing URL-safe characters for this example.

docker run -d \
  --name messagex-postgres \
  --network messagex-net \
  --network-alias postgres \
  --restart unless-stopped \
  -e POSTGRES_USER=messagex \
  -e POSTGRES_PASSWORD=ChangeThisStrongPassword123 \
  -e POSTGRES_DB=messagex \
  -v messagex-postgres-data:/var/lib/postgresql/data \
  postgres:17

Wait until PostgreSQL is ready:

docker exec messagex-postgres \
  pg_isready -U messagex -d messagex
⁠3. Start the broker
docker run -d \
  --name messagex-broker \
  --network messagex-net \
  --restart unless-stopped \
  -e NODE_ENV=production \
  -e HOST=0.0.0.0 \
  -e HTTP_PORT=3000 \
  -e TCP_PORT=5678 \
  -e DATABASE_URL=postgresql://messagex:ChangeThisStrongPassword123@postgres:5432/messagex \
  -e ACK_TIMEOUT_SECONDS=30 \
  -e ACK_TIMEOUT_CHECK_INTERVAL_MS=5000 \
  -p 5678:5678 \
  sameeryadav2005/messagex-broker-v2:0.1.1

The broker runs database migrations during startup.

⁠4. Initialize the administrator account

After the broker is healthy, initialize the first administrator:

docker run --rm \
  --network messagex-net \
  -e DATABASE_URL=postgresql://messagex:ChangeThisStrongPassword123@postgres:5432/messagex \
  -e MESSAGEX_ADMIN_USERNAME=admin \
  -e MESSAGEX_ADMIN_PASSWORD=YourStrongAdminPassword123 \
  sameeryadav2005/messagex-broker-v2:0.1.1 \
  node apps/broker/scripts/bootstrap-admin.mjs

Save these credentials. They are used to authenticate with the MessageX Dashboard and SDK.

⁠5. Verify the broker

View logs:

docker logs -f messagex-broker

Check readiness from inside the Docker network:

docker run --rm \
  --network messagex-net \
  curlimages/curl:latest \
  http://messagex-broker:3000/health/ready

⁠Environment Variables

VariableDefaultDescription
NODE_ENV—Runtime environment
HOST127.0.0.1Bind address
HTTP_PORT3000Management API port
TCP_PORT5678Broker TCP port
DATABASE_URLRequiredPostgreSQL connection URL
ACK_TIMEOUT_SECONDS30Acknowledgement timeout
ACK_TIMEOUT_CHECK_INTERVAL_MS5000Delivery recovery interval

Important: Use HOST=0.0.0.0 inside Docker so that other containers can reach the broker.

⁠Ports

PortProtocolPurpose
5678TCPSDK and application connections
3000HTTPManagement API and health checks
5432TCPPostgreSQL, private network

Only publish TCP port 5678 for client connections. Keep ports 3000 and 5432 private.

⁠Connect Using JavaScript SDK

Install the SDK:

npm install messagex-client

Example:

import { MessageX } from "messagex-client";

const client = new MessageX({
  host: "localhost",
  port: 5678,
  username: "admin",
  password: "YourStrongAdminPassword123"
});

await client.connect();

console.log("Connected to MessageX Broker");

⁠Useful Commands

# Broker logs
docker logs -f messagex-broker

# Restart broker
docker restart messagex-broker

# Stop broker
docker stop messagex-broker

# Start broker
docker start messagex-broker

⁠Security

  • Keep management API port 3000 private.
  • Never publish PostgreSQL port 5432 to untrusted networks.
  • Use strong database and administrator passwords.
  • The current TCP protocol does not provide TLS encryption.
  • Restrict TCP port 5678 to trusted networks where possible.

MessageX — Your infrastructure. Your messages. Your control.

Tag summary

Content type

Image

Digest

sha256:d07db7b19…

Size

93.9 MB

Last updated

3 days ago

docker pull sameeryadav2005/messagex-broker-v2:0.1.1