Redis Event Module
The Redis Event Module uses Redis to implement Medusa's pub/sub events system.
It's powered by BullMQ and io-redis. BullMQ is responsible for the message queue and worker, and io-redis is the underlying Redis client that BullMQ connects to for events storage.
In production, it's recommended to use this module.
Register the Redis Event Module#
Add the module into the modules property of the exported object in medusa-config.ts:
1import { Modules } from "@medusajs/framework/utils"2 3// ...4 5module.exports = defineConfig({6 // ...7 modules: [8 {9 resolve: "@medusajs/medusa/event-bus-redis",10 options: { 11 redisUrl: process.env.EVENTS_REDIS_URL,12 // suggested additional options for production use13 jobOptions: {14 removeOnComplete: {15 // keep jobs for 1 hour or up to 1000 jobs16 age: 3600,17 count: 1000,18 },19 removeOnFail: {20 // keep jobs for 1 hour or up to 1000 jobs21 age: 3600,22 count: 1000,23 }24 }25 },26 },27 ],28})
Environment Variables#
Make sure to add the following environment variables:
Redis Event Module Options#
| Option | Description | Required | Default |
|---|---|---|---|
| A string indicating the Redis connection URL. | Yes | - |
| An object of Redis options. Refer to the Redis API Reference for details on accepted properties. | No | - |
| A string indicating BullMQ's queue name. | No |
|
| An object of options to pass to the BullMQ constructor. Refer to BullMQ's API reference for allowed properties. | No | - |
| An object of options to pass to the BullMQ Worker constructor. Refer to BullMQ's API reference for allowed properties. | No | - |
| An object of options to pass to jobs added to the BullMQ queue. Refer to BullMQ's API reference for allowed properties. | No | - |
Test the Module#
To test the module, start the Medusa application:
You'll see the following message in the terminal's logs:
Terminal❯Connection to Redis in module 'event-redis' established