@eggplugin/rabbitmq
v2.0.1
Published
RabbitMq plugin for Egg
Downloads
18
Maintainers
Readme
egg-rabbitmq
amqplib plugin for Egg.js
NOTE: This plugin just for integrate amqplib into Egg.js, more documentation please visit http://www.squaremobius.net/amqp.node/.
Install
$ npm i @eggplugin/rabbitmq --save
Configuration
// {app_root}/config/plugin.js
exports.rabbitmq = {
enable: true,
package: '@eggplugin/rabbitmq',
};
see config/config.default.js for more detail.
*** Warning ***
v2.x and v1.x are not compatible
// v.1x channel
const ch = app.rabbitmq;
// v2.x connection and channel
const { conn, ch } = app.rabbitmq;
Usage for v2.x
Simple instance
config
// {app_root}/config/config.default.js
exports.rabbitmq = {
client: {
url: 'amqp://guest:guest@localhost:5672',
},
// load into app, default is open
app: true,
// load into agent, default is close
agent: false,
};
exmaple:
(async () => {
// you can access to connection and channel using app.rabbitmq.
const { ch, conn } = app.rabbitmq;
// assertQueue
await ch.assertQueue(queueName, { durable: true });
// checkQueue
await ch.checkQueue(queueName);
// sendToQueue
ch.sendToQueue(queueName, Buffer.from(msg));
// If you want to get a channel which uses "confirmation mode"
const confirmChannel = await conn.createConfirmChannel();
}).catch(console.error);
Multiple instance
exports.rabbitmq = {
clients: {
// clientId, access the client instance by app.rabbitmq.get('clientId')
client1: {
url: 'amqp://guest:guest@localhost:5672',
},
client2: {
url: 'amqp://guest:guest@xxx',
},
// ...
},
// load into app, default is open
app: true,
// load into agent, default is close
agent: false,
};
Usage:
const { ch: ch1, conn: conn1 } = app.rabbitmq.get('client1');
const { ch: ch2, conn: conn2 } = app.rabbitmq.get('client2');
Usage for v1.x
Simple instance
// {app_root}/config/config.default.js
exports.rabbitmq = {
client: {
url: 'amqp://guest:guest@localhost:5672',
},
// load into app, default is open
app: true,
// load into agent, default is close
agent: false,
};
Usage:
(async () => {
// you can access to simple rabbitmq instance channel using app.rabbitmq.
const ch = app.rabbitmq; // Channel
// assertQueue
await ch.assertQueue(queueName, { durable: true });
// checkQueue
await ch.checkQueue(queueName);
// sendToQueue
ch.sendToQueue(queueName, Buffer.from(msg));
}).catch(console.error);
Multiple instance
exports.rabbitmq = {
clients: {
// clientId, access the client instance by app.rabbitmq.get('clientId')
client1: {
url: 'amqp://guest:guest@localhost:5672',
},
client2: {
url: 'amqp://guest:guest@xxx',
},
// ...
},
// load into app, default is open
app: true,
// load into agent, default is close
agent: false,
};
Usage:
const ch1 = app.rabbitmq.get('client1');
const ch2 = app.rabbitmq.get('client2');
Questions & Suggestions
Please open an issue here.