fix: use fewer redis connections

This commit is contained in:
Sebastian Rindom committed 2020-09-01 11:32:12 +02:00
1 parent 20c06e11cc
commit b5ee323bf6
2 files changed
+12 -7

No files matched your search

+9
View File
@@ -1,4 +1,6 @@
import { createContainer, asValue } from "awilix" import { createContainer, asValue } from "awilix"
import Redis from "ioredis"
import expressLoader from "./express" import expressLoader from "./express"
import mongooseLoader from "./mongoose" import mongooseLoader from "./mongoose"
import apiLoader from "./api" import apiLoader from "./api"
@@ -9,6 +11,7 @@ import passportLoader from "./passport"
import pluginsLoader from "./plugins" import pluginsLoader from "./plugins"
import defaultsLoader from "./defaults" import defaultsLoader from "./defaults"
import Logger from "./logger" import Logger from "./logger"
import config from "../config"
export default async ({ directory: rootDirectory, expressApp }) => { export default async ({ directory: rootDirectory, expressApp }) => {
const container = createContainer() const container = createContainer()
@@ -28,7 +31,13 @@ export default async ({ directory: rootDirectory, expressApp }) => {
return this return this
}.bind(container) }.bind(container)
// Economical way of dealing with redis clients
const client = new Redis(config.redisURI)
const subscriber = new Redis(config.redisURI)
container.register({ container.register({
redisClient: client,
redisSubscriber: subscriber,
logger: asValue(Logger), logger: asValue(Logger),
}) })
+3 -7
View File
@@ -7,7 +7,7 @@ import config from "../config"
* @interface * @interface
*/ */
class EventBusService { class EventBusService {
constructor({ logger }) { constructor({ logger, redisClient, redisSubscriber }) {
/** @private {logger} */ /** @private {logger} */
this.logger_ = logger this.logger_ = logger
@@ -20,17 +20,13 @@ class EventBusService {
/** @private {BullQueue} used for cron jobs */ /** @private {BullQueue} used for cron jobs */
this.cronQueue_ = new Bull(`cron-jobs:queue`, config.redisURI) 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 = { const opts = {
createClient: type => { createClient: type => {
switch (type) { switch (type) {
case "client": case "client":
return client return redisClient
case "subscriber": case "subscriber":
return subscriber return redisSubscriber
default: default:
return new Redis(config.redisURI) return new Redis(config.redisURI)
} }