index.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import loggerFactory from '~/utils/logger';
  2. import { S2sMessagingService } from './base';
  3. const logger = loggerFactory('growi:service:s2s-messaging:S2sMessagingServiceFactory');
  4. const envToModuleMappings = {
  5. redis: 'redis',
  6. nchan: 'nchan',
  7. };
  8. // WIP: Ts.ED code
  9. //
  10. // registerProvider({
  11. // provide: S2sMessagingService,
  12. // deps: [ConfigManager],
  13. // useFactory(configManager: ConfigManager) {
  14. // const type = configManager.getConfig('crowi', 's2sMessagingPubsub:serverType');
  15. // if (type == null) {
  16. // logger.info('Config pub/sub server is not defined.');
  17. // return;
  18. // }
  19. // logger.info(`Config pub/sub server type '${type}' is set.`);
  20. // const module = envToModuleMappings[type];
  21. // const modulePath = `./${module}`;
  22. // this.delegator = require(modulePath)(crowi);
  23. // if (this.delegator == null) {
  24. // logger.warn('Failed to initialize config pub/sub delegator.');
  25. // }
  26. // },
  27. // })
  28. /**
  29. * Instanciate server-to-server messaging service
  30. */
  31. class S2sMessagingServiceFactory {
  32. delegator!: S2sMessagingService;
  33. initializeDelegator(crowi) {
  34. const type = crowi.configManager.getConfig('crowi', 's2sMessagingPubsub:serverType');
  35. if (type == null) {
  36. logger.info('Config pub/sub server is not defined.');
  37. return;
  38. }
  39. logger.info(`Config pub/sub server type '${type}' is set.`);
  40. const module = envToModuleMappings[type];
  41. const modulePath = `./${module}`;
  42. // eslint-disable-next-line @typescript-eslint/no-var-requires
  43. this.delegator = require(modulePath)(crowi);
  44. if (this.delegator == null) {
  45. logger.warn('Failed to initialize config pub/sub delegator.');
  46. }
  47. }
  48. getDelegator(crowi) {
  49. if (this.delegator == null) {
  50. this.initializeDelegator(crowi);
  51. }
  52. return this.delegator;
  53. }
  54. }
  55. const factory = new S2sMessagingServiceFactory();
  56. module.exports = (crowi) => {
  57. return factory.getDelegator(crowi);
  58. };