node-tenancy
Version:
Making multi-tenancy easier with Node.js & typescript
64 lines (49 loc) • 1.46 kB
Markdown
## Redis
Example of Pub-Sub with Redis:
```dotenv
#env variables that must exists
QUEUE_DRIVER=redis
QUEUE_CONNECTION=
QUEUE_TENANT_CONNECTION=
```
```js
const queueClass = require('queue');
queueClass.getMessages('test', true);
queueClass.publishMessage('test', {'message': 'test'}, true);
```
`queue.js`
```js
const {queue, config} = require('node-tenancy');
//connection must be set if you are not using middleware
function setConnectionConfig(is_tenant_connection) {
if (is_tenant_connection) {
config.setConfig({
'connection': 'tenant',
});
} else {
config.setConfig({
'connection': 'central',
});
}
}
async function getMessages(channel_name, is_tenant_connection = false) {
setConnectionConfig(is_tenant_connection);
// queue.connect(url = null, options = {})
const client = await queue.connect();
await client.subscribe(channel_name, (message) => {
console.log(message);
}, true);
await client.quit();
}
async function publishMessage(channel_name, message, is_tenant_connection = false) {
setConnectionConfig(is_tenant_connection);
// queue.connect(url = null, options = {})
const client = await queue.connect();
await client.publish(channel_name, JSON.stringify(message));
setTimeout(function () {
client.quit();
}, 500);
}
module.exports = {getMessages, publishMessage};
```
#### **Just be careful to provide a close connection in the callback function if needed.**