directus
1import { createBus, type Bus } from '@directus/memory';
2import { redisConfigAvailable, useRedis } from '../../redis/index.js';
3
4export const _cache: { bus: Bus | undefined } = {
5bus: undefined,
6};
7
8/**
9* Returns globally shared message bus. If Redis is available, will use a redis-driven pub/sub bus.
10* Otherwise will default to a local-only bus.
11*/
12export const useBus = () => {
13if (_cache.bus) {
14return _cache.bus;
15}
16
17if (redisConfigAvailable()) {
18_cache.bus = createBus({ type: 'redis', redis: useRedis(), namespace: 'directus:bus' });
19} else {
20_cache.bus = createBus({ type: 'local' });
21}
22
23return _cache.bus;
24};
25