const memphis = require("memphis-dev");
const { logger } = require('./loggerService')
const MEMPHIS_HOST = process.env.MEMPHIS_HOST || 'localhost'; // create MQ connection string using environment variable
const MEMPHIS_USERNAME = process.env.MEMPHIS_USERNAME;
const MEMPHIS_TOKEN = process.env.MEMPHIS_TOKEN;
let ordersStation_producer = null;
const memphisConnect = async () => {
logger.info(`Memphis - trying to connect`)
username: MEMPHIS_USERNAME,
connectionToken: MEMPHIS_TOKEN
logger.info(`Memphis - connection established`)
ordersStation_producer = await memphis.producer({
producerName: "order_service",
logger.info(`ordersStation_producer created`)
logger.log('fatal',`Memphis - ${ex}`);
* Publish order to station
* @param {Object} order - order object containing order details
const publishOrderToStation = (order) => {
ordersStation_producer.produce({message: Buffer.from(JSON.stringify(order))});
logger.info(`Memphis - order ${order._id} placed`);
* An express middleware for injecting queue services into the request object.
* @param {Object} req - express request object.
* @param {Object} res - express response object.
* @param {Function} next - express next() function.
const injectPublishService = (req, res, next) => {
// add all exchange operations here
const stationServices = {
publishOrderToStation: publishOrderToStation
// inject exchangeServices in request object
req.stationServices = stationServices;
injectPublishService: injectPublishService,
memphisConnect: memphisConnect,