Files
medusa-store/packages/event-bus-redis
Oli Juhl 0eb68541b8 fix: Resume workflow execution (#7103)
Supercedes #7051 – if OK, I'll move the base of this PR to `develop` and we can run reviews only of this one.

**What**
- Gracefully close BullMQ Worker in Redis Event Bus and Redis Workflow Engine (by @edast, @sradevski)
- Register workflows before MedusaApp is loaded*
- Introduce `onApplicationPrepareShutdown`**
- Refactor plugin resolving for reusability purposes

*We now register workflows before modules are loaded to ensure modules can run workflows as part of bootstrapping. E.g. the Redis Workflow Engine resumes workflows when it starts, which has until this change failed, because the workflows were not registered yet.

**We introduce a new hook to prepare resources for an application shutdown. E.g. closing the BullMQ worker as a preparatory step to closing the BullMQ queue. The worker will continue to process jobs while the queue is still open to receive new jobs (without processing them). 

Co-authored-by: Stevche Radevski <4820812+sradevski@users.noreply.github.com>
Co-authored-by: Darius <618221+edast@users.noreply.github.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
2024-04-22 12:32:50 +00:00
..
2024-03-26 18:04:04 +01:00
2024-03-26 18:04:04 +01:00

Medusa

@medusajs/event-bus-redis

Documentation | Website

An open source composable commerce engine built for developers.

Medusa is released under the MIT license. Current CircleCI build status. PRs welcome! Product Hunt Discord Chat Follow @medusajs

Overview

Redis Event Bus module for Medusa. When installed, the events system of Medusa is powered by BullMQ and io-redis. BullMQ is responsible for the message queue and worker. io-redis is the underlying Redis client, that BullMQ connects to for events storage.

Getting started

Install the module:

yarn add @medusajs/event-bus-redis

Add the module to your medusa-config.js:

module.exports = {
  // ...
  modules: [
    {
      resolve: "@medusajs/event-bus-redis",
      options: {
        redisUrl: "redis:.."
      },
    },
  ],
  // ...
}

Configuration

The module can be configured with the following options:

Option Type Description Default
redisUrl string URL of the Redis instance to connect to. events-worker
queueName string? Name of the BullMQ queue. events-queue
queueOptions object? Options for the BullMQ queue. See BullMQ's documentation. {}
redisOptions object? Options for the Redis instance. See io-redis's documentation {}

Info: See how the options are applied in the RedisEventBusService and loader.

If you do not provide a redisUrl in the module options, the server will fail to start.