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) |





