DEV Community

Cover image for Creating a subscriber in medusa
Chris Bongers
Chris Bongers

Posted on • Originally published at daily-dev-tips.com

Creating a subscriber in medusa

Another cool feature in medusa is that we can create custom subscribers. Subscribers are actions that are triggered by certain events.

Check out this list with all events available.

In our case, we want to subscribe to the product.created event so we can eventually request external information for each product created.

Installing Redis

The subscriber fires based on Redis, so to make this work, you'll have to set up Redis for medusa.

First, install Redis on your machine. You can follow the documentation on the Redis website.

Once installed, open up your medusa server project and find the medusa-config.js file.

You will see the following line, which defines the Redis URL. You can set it to another value via the .env file. (However, in most cases, this default will work).

const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379';
Enter fullscreen mode Exit fullscreen mode

Then a bit lower, you need to enable Redis in the config.

module.exports = {
  projectConfig: {
    // Turn the line below on
    redis_url: REDIS_URL,
    database_database: './medusa-db.sql',
    database_type: 'sqlite',
    store_cors: STORE_CORS,
    admin_cors: ADMIN_CORS,
  },
  plugins,
};
Enter fullscreen mode Exit fullscreen mode

And that's it. You now have Redis enabled.

Creating a custom subscriber in medusa

Now that we have Redis installed let's create our custom subscribers.

In your medusa server project, find the src/subscribers folder and, in there, create a new file called: productNotifier.js.
I'm using this naming as I want to be a notifier for new products.

The setup for each subscriber looks like this.

class ProductNotifierSubscriber {
  constructor({ eventBusService }) {
    eventBusService.subscribe('product.created', this.handleProduct);
  }

  handleProduct = async (data) => {
    console.log('New product: ' + data.id);
  };
}

export default ProductNotifierSubscriber;
Enter fullscreen mode Exit fullscreen mode

In the example above, we subscribe to the product.created event, which is triggered each time a product is created.
We can tell medusa to execute our own handleProduct function.

Inside this function, we log the product for now.

Go ahead and spool up your server. Now visit the admin portal and add a new product.
You should see the server log showing this log now.

medusa custom subscriber

Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

Oldest comments (0)