Skip to content

sanchosa/nodejs-utils-rmq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nodejs-utils-rmq

RabbitMQ helper utility for nodeJS

example

const QueueHelper = require(`nodejs-utils-rmq`)

const queueConfig = {
	QUEUE: {
		CHECK_INTERVAL: 300000,
		CONNECTION_OPTIONS: {
			host: `some-host`
		},
		ASSERT_OPTIONS: {
			durable: true
		}
	},
	MY_QUEUE: {
		CONSUME_OPTIONS: {
			noAck: false
		},
		SEND_OPTIONS: {
			persistent: true,
			content_type: `application/json`
		},
		NAME: `myQueue`,
	},
}

const rmq = new QueueHelper() // new QueueHelper(customLogger like log4js)
const sendMessage = () => {
	rmq.sendRMQMessage(queueConfig.MY_QUEUE.NAME,
		{id: `test id`, data: `test data`},
		queueConfig.MY_QUEUE.SEND_OPTIONS)
		.then(res => console.log(res))
		.catch(err => console.error(err))
}
const processMessage = msg => {
	// do something
	console.log(`Process message...`)

	let msgId = `noId`

	if (`correlationId` in msg.properties) {
		msgId = msg.properties.correlationId
		console.log(`Incoming message: ${msgId}`)
	}

	rmq.sendRMQack(msg)
}
const params = {
	requiredQueues: [queueConfig.MY_QUEUE.NAME],
	queue: {
		connectionOptions: queueConfig.QUEUE.CONNECTION_OPTIONS,
		assertOptions: queueConfig.QUEUE.ASSERT_OPTIONS
	},
	requiredListeners: [{
		name: queueConfig.MY_QUEUE.NAME,
		options: queueConfig.MY_QUEUE.CONSUME_OPTIONS,
		worker: processMessage,
	}],
	customChannelReadyListener: () => sendMessage()
}

rmq.setRMQData(params)
	.then(() => console.log(`Ready !`))
	.catch(err => console.error(err))

rmq.setCheckQueueInterval(queueConfig.QUEUE.CHECK_INTERVAL)

About

RabbitMQ helper utility for nodeJS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published