Where do I set NOTIFICATIONS_SCHEDULE_DELAY for a docker install?

I’ve installed rocket.chat using docker compose. Currently I’m in the process of persuading our small business team to switch over from using Whatsapp and FB Messenger. It has taken months but I am _so_close.

Myself and my co-founder have been using it for personal chats for about two months and she is mostly convinced that’s it’s a good idea to switch the entire team.

There’s just one blocker: notifications. She was complaining that Rocket.Chat notifications are too slow and makes short conversations get spread out over hours.

We just sat down together. I sent her a message on Whatsapp, she got a notification instantly. She checked the message, locked her phone and I sent her another message. Again, received instantly. We repeated the experiment with Messenger, same result.

Finally we tested with Rocket.Chat. I sent her a notification. We waited… nothing. After about 30 seconds she opened the app and my message is there, but no notification. She locked her phone and I sent another message. Still nothing. We waited a few minutes and finally the notification did show up so notifications are working.

Also note that if I “Send a test push to my user”, I receive that instantly on the Android app.

I’ve checked around and found some discussions like this one:

And also this PR from V3.4.0 which references some NOTIFICATIONS_SCHEDULE_DELAY settings

The settings in question:

NOTIFICATIONS_SCHEDULE_DELAY_ONLINE
NOTIFICATIONS_SCHEDULE_DELAY_AWAY
NOTIFICATIONS_SCHEDULE_DELAY_OFFLINE

I cannot find any reference to these anywhere else though.

So two questions:

  1. Do these settings exist recent Rocket.Chat releases?
  2. Will changing them make mobile notifications get delivered fater? If not is there some other way?
  3. How do I change them? Can I set them as environment variables in my docker compose?
version: "3.7"

services:
  rocketchat:
    image: registry.rocket.chat/rocketchat/rocket.chat:latest
    restart: unless-stopped
    volumes:
      - /mnt/containers/rocketchat/app/uploads:/app/uploads
    labels:
      traefik.enable: 'false'
    environment:
      MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
      MONGO_OPLOG_URL: "mongodb://mongodb:27017/local?replicaSet=rs0"
      ROOT_URL: http://localhost:3021
      PORT: 3021
    depends_on:
      - mongodb   
    expose:
      - 3021
    ports:
      - 3021:3021

  mongodb:
    image: mongo:5
    restart: unless-stopped
    volumes:
      - /mnt/containers/rocketchat/data/db:/data/db
      - /mnt/containers/rocketchat/data/configdb:/data/configdb
    entrypoint: [ "/usr/bin/mongod", "--replSet", "rsmongo", "--bind_ip_all"]
    environment:
      MONGODB_REPLICA_SET_MODE: primary
      MONGODB_REPLICA_SET_NAME: rs0
      MONGODB_PORT_NUMBER: 27017
      MONGODB_INITIAL_PRIMARY_HOST: mongodb
      MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017
      MONGODB_ADVERTISED_HOSTNAME: mongodb
      MONGODB_ENABLE_JOURNAL: "true"
      ALLOW_EMPTY_PASSWORD: "yes"

hi @lewy !

Sorry for the delay here :wink:

This is the doc you should look for: Managing Settings Using Environment Variables - Rocket.Chat Docs

TL;DR you can overwrite/define almost everything using ENV VARs.

So, for you case, you could set:

    ...
    labels:
      traefik.enable: 'false'
    environment:
      MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
      MONGO_OPLOG_URL: "mongodb://mongodb:27017/local?replicaSet=rs0"
      ROOT_URL: http://localhost:3021
      PORT: 3021
      OVERWRITE_SETTING_NOTIFICATIONS_SCHEDULE_DELAY_ONLINE: 1
      OVERWRITE_SETTING_NOTIFICATIONS_SCHEDULE_DELAY_AWAY: 1
      OVERWRITE_SETTING_NOTIFICATIONS_SCHEDULE_DELAY_OFFLINE: 1

    depends_on:
    ....

Let me know if this helps :slight_smile:

1 Like

All good! Thanks for your help.

I will test these out and get back to you if I run into any problems. Hopefully this will show up on Google for other folks looking to understand these settings too :slight_smile:

BTW do you have any idea what values here will get the behavior closest to WhatsApp/Messenger etc.?
Should I set them all to 1 like in your suggestion?

The clear message I am getting from my team is that the more I can get RC to behave like these familiar messaging apps, the easier the transition will go.

Hi!

This will all depend on the scale you have running versus the compute power you have for that.

If this setting is effective, you should consider decreasing it from the default value and monitor how your instance is behaving.

OK, thanks.

I did just set all values to 1 and did some quick testing. Notifications do seem almost instant now. I monitor over the next few weeks and report here if there’s any further issues.

1 Like