From b5ee323bf68606af596fb8ba4a941b950f06abd3 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Tue, 1 Sep 2020 11:32:12 +0200 Subject: [PATCH] fix: use fewer redis connections --- packages/medusa/src/loaders/index.js | 9 +++++++++ packages/medusa/src/services/event-bus.js | 10 +++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/medusa/src/loaders/index.js b/packages/medusa/src/loaders/index.js index a39d783abd..12f4c8a602 100644 --- a/packages/medusa/src/loaders/index.js +++ b/packages/medusa/src/loaders/index.js @@ -1,4 +1,6 @@ import { createContainer, asValue } from "awilix" +import Redis from "ioredis" + import expressLoader from "./express" import mongooseLoader from "./mongoose" import apiLoader from "./api" @@ -9,6 +11,7 @@ import passportLoader from "./passport" import pluginsLoader from "./plugins" import defaultsLoader from "./defaults" import Logger from "./logger" +import config from "../config" export default async ({ directory: rootDirectory, expressApp }) => { const container = createContainer() @@ -28,7 +31,13 @@ export default async ({ directory: rootDirectory, expressApp }) => { return this }.bind(container) + // Economical way of dealing with redis clients + const client = new Redis(config.redisURI) + const subscriber = new Redis(config.redisURI) + container.register({ + redisClient: client, + redisSubscriber: subscriber, logger: asValue(Logger), }) diff --git a/packages/medusa/src/services/event-bus.js b/packages/medusa/src/services/event-bus.js index cc9070b767..977bc0b721 100644 --- a/packages/medusa/src/services/event-bus.js +++ b/packages/medusa/src/services/event-bus.js @@ -7,7 +7,7 @@ import config from "../config" * @interface */ class EventBusService { - constructor({ logger }) { + constructor({ logger, redisClient, redisSubscriber }) { /** @private {logger} */ this.logger_ = logger @@ -20,17 +20,13 @@ class EventBusService { /** @private {BullQueue} used for cron jobs */ this.cronQueue_ = new Bull(`cron-jobs:queue`, config.redisURI) - // Economical way of dealing with redis clients - const client = new Redis(config.redisURI) - const subscriber = new Redis(config.redisURI) - const opts = { createClient: type => { switch (type) { case "client": - return client + return redisClient case "subscriber": - return subscriber + return redisSubscriber default: return new Redis(config.redisURI) }