It stores the queue lib for ActBox services communication
npm install @actbox/queueThis module defines the interface for messaging broker services in order to communicate the rest of ActBox services
Tip Remenber you could run rabbitMQ effortlessly with Docker Docker Hub
queueName field is required.``json
{
queueName: "my-queue", // take in mind, you need to use the same name in producer and consumer entities as rabbitMQ docs explains
/**
* by default, connectionURI is "amqp://localhost" and the port is the default from rabbitMQ, it is "5672"
**/
connectionURI: "amqp://localhost", // it represents the end-point where rabbitMQ is allocated
forceNACK: false // https://www.rabbitmq.com/confirms.html
}
`
`bash`
cd queue && npm run build
On backend and file-service modules, replace amqplib with the @actbox/queue:
`json`
"dependencies": {
...
"amqplib": "^0.6.0", (remove this dependency)
"@actbox/queue": "file:{relativePathToQueueModule}",
...
}
It depends on you start a consumer or producer, you have to start once any of them.
For producers:
`js
const { workQueue } = require('@actbox/queue');
const { startProducer, sendToQueue } = workQueue;
await startProducer({ queueName: 'my-queue' });
const message = { name: 'actBox rules! 😊' };
sendToQueue(message);
`
For consumers:
`js
const { workQueue } = require('@actbox/queue');
const { startConsumer, consumeFromQueue } = workQueue;
await startConsumer({ queueName: 'my-queue' });
consumeFromQueue().listen(async (message) => {
message.content; // { name: 'actBox rules! 😊' }
});
`$3
For servers:
`js
const { rpc } = require('@actbox/queue');
const { startServer } = rpc;
const myQueueServer = await startServer({ queueName: 'my-queue' });
myQueueServer.listen(async (message) => {
try {
const response = await anyAsyncTask();
return { response }
} catch(err) {
return {
error: {
message: err.message
}
}
}
});
`
For clients:
`js
const { rpc } = require('@actbox/queue');
const { startClient } = rpc;
const myQueueClient = await startClient({ queueName: 'my-queue' });
myQueueClient.send({ data: 'some data to server' });
myQueueClient.listen((message, error) => {
if(error) {
// handle error as error.message
}
// handle response message
});
``