docker-compose
version: "3.6"
services:
rabbitmq:
image: "rabbitmq:3.8-management"
container_name: rabbitmq
restart: always
environment:
- RABBITMQ_DEFAULT_USER=${RABBIT_MQ_USER}
- RABBITMQ_DEFAULT_PASS=${RABBIT_MQ_PASSWORD}
ports:
- 15672:15672
- 5672:5672
- 1883:1883
volumes:
- /mnt/ssd/rabbitmq:/var/lib/rabbitmq
- /mnt/ssd/rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins
file [enabled_plugsin]
[rabbitmq_management,rabbitmq_prometheus,rabbitmq_mqtt].
plugins
$ rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@abc971aca36f
|/
[ ] rabbitmq_amqp1_0 3.8.18
[ ] rabbitmq_auth_backend_cache 3.8.18
[ ] rabbitmq_auth_backend_http 3.8.18
[ ] rabbitmq_auth_backend_ldap 3.8.18
[ ] rabbitmq_auth_backend_oauth2 3.8.18
[ ] rabbitmq_auth_mechanism_ssl 3.8.18
[ ] rabbitmq_consistent_hash_exchange 3.8.18
[ ] rabbitmq_event_exchange 3.8.18
[ ] rabbitmq_federation 3.8.18
[ ] rabbitmq_federation_management 3.8.18
[ ] rabbitmq_jms_topic_exchange 3.8.18
[E*] rabbitmq_management 3.8.18
[e*] rabbitmq_management_agent 3.8.18
[E*] rabbitmq_mqtt 3.8.18
[ ] rabbitmq_peer_discovery_aws 3.8.18
[ ] rabbitmq_peer_discovery_common 3.8.18
[ ] rabbitmq_peer_discovery_consul 3.8.18
[ ] rabbitmq_peer_discovery_etcd 3.8.18
[ ] rabbitmq_peer_discovery_k8s 3.8.18
[E*] rabbitmq_prometheus 3.8.18
[ ] rabbitmq_random_exchange 3.8.18
[ ] rabbitmq_recent_history_exchange 3.8.18
[ ] rabbitmq_sharding 3.8.18
[ ] rabbitmq_shovel 3.8.18
[ ] rabbitmq_shovel_management 3.8.18
[ ] rabbitmq_stomp 3.8.18
[ ] rabbitmq_top 3.8.18
[ ] rabbitmq_tracing 3.8.18
[ ] rabbitmq_trust_store 3.8.18
[e*] rabbitmq_web_dispatch 3.8.18
[ ] rabbitmq_web_mqtt 3.8.18
[ ] rabbitmq_web_mqtt_examples 3.8.18
[ ] rabbitmq_web_stomp 3.8.18
[ ] rabbitmq_web_stomp_examples 3.8.18
$ rabbitmq-plugins enable rabbitmq_mqtt
Callback API example
var q = "tasks";
function bail(err) {
console.error(err);
process.exit(1);
}
// Publisher
function publisher(conn) {
conn.createChannel(on_open);
function on_open(err, ch) {
if (err != null) bail(err);
ch.assertQueue(q);
ch.sendToQueue(q, Buffer.from("something to do"));
}
}
// Consumer
function consumer(conn) {
var ok = conn.createChannel(on_open);
function on_open(err, ch) {
if (err != null) bail(err);
ch.assertQueue(q);
ch.consume(q, function (msg) {
if (msg !== null) {
console.log(msg.content.toString());
ch.ack(msg);
}
});
}
}
require("amqplib/callback_api").connect(
"amqp://localhost",
function (err, conn) {
if (err != null) bail(err);
consumer(conn);
publisher(conn);
}
);
Promise API example
var q = "tasks";
var open = require("amqplib").connect("amqp://localhost");
// Publisher
open
.then(function (conn) {
return conn.createChannel();
})
.then(function (ch) {
return ch.assertQueue(q).then(function (ok) {
return ch.sendToQueue(q, Buffer.from("something to do"));
});
})
.catch(console.warn);
// Consumer
open
.then(function (conn) {
return conn.createChannel();
})
.then(function (ch) {
return ch.assertQueue(q).then(function (ok) {
return ch.consume(q, function (msg) {
if (msg !== null) {
console.log(msg.content.toString());
ch.ack(msg);
}
});
});
})
.catch(console.warn);