Bagi pengguna integrasi sudah tidak aneh lagi dengan mqtt.
Product Active MQ ada beberapa tapi yang sama pake itu ActiveMQ Artemis, mungkin ada pertanyaan mana yang bagus
ActiveMQ Classic (rmohr/activemq)
-
✅ Stabil & banyak digunakan di sistem lama atau integrasi legacy.
-
✅ Cocok buat aplikasi yang masih pakai OpenWire, JMS 1.1, dan protokol lama.
-
⚠️ UI-nya agak ketinggalan zaman.
-
⚠️ Tidak aktif dikembangkan lagi, fokusnya udah pindah ke Artemis.
ActiveMQ Artemis (apache/activemq-artemis)
-
✅ Lebih modern, performa lebih bagus.
-
✅ Dukungan protokol banyak: AMQP, MQTT, OpenWire, STOMP, dsb.
-
✅ Cocok buat sistem baru, microservices, dan performa tinggi.
-
⚠️ Agak beda API-nya, jadi kalau migrasi dari Classic, butuh penyesuaian.
✅ Rekomendasi:
-
Kalau proyek baru atau microservice → pakai Artemis.
-
️ Kalau sistem lama atau integrasi JMS lama → pakai Classic.
✅ 1. Volume di luar Docker (host path)
Supaya data tetap ada meskipun kontainernya dihapus/restart:
✅ mqtt-docker-compose.yml
lengkap (production-ready base)
services: artemis: image: apache/activemq-artemis:2.31.2 container_name: artemis environment: ARTEMIS_USER: secureuser ARTEMIS_PASSWORD: strong@Password123 ports: - "8161:8161" # Web console - "61616:61616" # Protocols (AMQP, CORE, OpenWire, etc) - "1883:1883" # MQTT volumes: - artemis-data:/var/lib/artemis-instance healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8161"] interval: 30s timeout: 10s retries: 5 restart: unless-stopped networks: - internal_net volumes: artemis-data: driver: local driver_opts: type: none device: /opt/data/artemis o: bind networks: internal_net: driver: bridge
untuk ActiveMQ Artemis yang:
-
Menggunakan volume di luar Docker (
/opt/data/artemis
) -
Sudah diset username/password yang aman
-
Menggunakan internal Docker network (tidak expose port ke host tanpa perlu)
-
Tambah
healthcheck
-
Siap untuk dikembangkan ke arah production
✅ 2. Security tambahan
a. Ganti username dan password default
Jangan pakai admin:admin
di production , ganti jadi yang lebih aman:
Untuk password di buatkan ada angka, huruf besar, huruf kecil, simbol
environment: ARTEMIS_USER: secureuser ARTEMIS_PASSWORD: strong@Password123
b. Gunakan firewall atau network policy
Kalau pakai VPS/VM biasa:
sudo ufw allow from [trusted_ip] to any port 8161,61616 proto tcp
Bonus: Tambahkan healthcheck
Supaya Docker bisa tahu kapan Artemis siap dipakai, maka di yml di atas ada:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8161"] interval: 30s timeout: 10s retries: 5
Langkah persiapan di host (Linux):
sudo mkdir -p /opt/data/artemis sudo chown 1000:1000 /opt/data/artemis # Sesuaikan UID jika perlu
✅ Cara menjalankannya:
docker compose -f mqtt-docker-compose.yml up -d
Penjelasan:
-
-f mqtt-docker-compose.yml
→ pakai file yang kamu tentukan -
up
→ mulai servicenya -
-d
→ jalan di background (detached mode)
✅ Kalau mau stop servicenya:
docker compose -f mqtt-docker-compose.yml down
✅ Lihat status servicenya:
docker compose -f mqtt-docker-compose.yml ps
✅ Lihat logs servicenya:
docker compose -f mqtt-docker-compose.yml logs -f
✅ 1. Akses Web Console (GUI Admin)
URL: http://localhost:8161/console
Kalau kamu akses dari komputer lain, ganti localhost
dengan IP server, contoh:http://10.60.78.16:8161/console
Login dengan:
-
Username: yang kamu set di
ARTEMIS_USER
(misal: secureuser) -
Password: yang kamu set di
ARTEMIS_PASSWORD
(misal: strong@Password123)
✅ 2. Port dan Protokol Aktif (dari log):
Port | Protokol | Keterangan |
---|---|---|
5445 | HORNETQ, STOMP | Legacy & integrasi |
5672 | AMQP | Cocok buat microservices (RabbitMQ-style) |
1883 | MQTT | Buat IoT, ringan, cocok buat sensor dll |
61613 | STOMP | Umum dipakai untuk WebSocket over STOMP |
61616 | OpenWire | Protokol JMS (default ActiveMQ Classic) |
8161 | HTTP/Web UI | Console dan REST API |
✅ 3. Contoh Akses MQTT Client
Kalau kamu pakai MQTT client (misal: MQTT.fx, Mosquitto, atau Paho), koneksinya:
✅ Langkah Akses Artemis di MQTT Explorer
-
Buka MQTT Explorer
-
Klik tombol “New Connection”
-
Isi settingannya seperti ini:
Connection Settings
Setting | Nilai yang Diisi |
---|---|
Name | Artemis MQTT (atau terserah kamu) |
Protocol | MQTT (tcp) |
Host | localhost (atau IP server) |
Port | 1883 |
Username | secureuser (atau ARTEMIS_USER kamu) |
Password | strong@Password123 (atau ARTEMIS_PASSWORD kamu) |
Client ID | mqtt-explorer-1234 (bebas, unik) |
Clean session | ✅ centang |
SSL/TLS | ❌ tidak perlu (kecuali kamu aktifkan TLS) |