diff --git a/.changeset/itchy-elephants-trade.md b/.changeset/itchy-elephants-trade.md new file mode 100644 index 0000000000..8ac6aaeeb9 --- /dev/null +++ b/.changeset/itchy-elephants-trade.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-events-backend': patch +'@backstage/plugin-events-node': patch +--- + +Fix `events.useEventBus` by propagating config to `DefaultEventsService` diff --git a/packages/backend-legacy/src/index.ts b/packages/backend-legacy/src/index.ts index 9a581e7d26..0b566910d1 100644 --- a/packages/backend-legacy/src/index.ts +++ b/packages/backend-legacy/src/index.ts @@ -73,9 +73,10 @@ function makeCreateEnv(config: Config) { discovery, }); - const eventsService = DefaultEventsService.create({ logger: root }); + const eventsService = DefaultEventsService.create({ logger: root, config }); const eventBroker = new DefaultEventBroker( root.child({ type: 'plugin' }), + config, eventsService, ); const signalsService = DefaultSignalsService.create({ diff --git a/plugins/events-backend/report.api.md b/plugins/events-backend/report.api.md index fb9f5fb237..0923db1921 100644 --- a/plugins/events-backend/report.api.md +++ b/plugins/events-backend/report.api.md @@ -18,7 +18,7 @@ import { LoggerService } from '@backstage/backend-plugin-api'; // @public @deprecated export class DefaultEventBroker implements EventBroker { // @deprecated - constructor(logger: LoggerService, events?: EventsService); + constructor(logger: LoggerService, config?: Config, events?: EventsService); // (undocumented) publish(params: EventParams): Promise; // (undocumented) @@ -29,7 +29,7 @@ export class DefaultEventBroker implements EventBroker { // @public @deprecated export class EventsBackend { - constructor(logger: Logger); + constructor(logger: Logger, config?: Config); // (undocumented) addPublishers( ...publishers: Array> diff --git a/plugins/events-backend/src/service/DefaultEventBroker.ts b/plugins/events-backend/src/service/DefaultEventBroker.ts index 27523f3118..a092782d96 100644 --- a/plugins/events-backend/src/service/DefaultEventBroker.ts +++ b/plugins/events-backend/src/service/DefaultEventBroker.ts @@ -15,6 +15,7 @@ */ import { LoggerService } from '@backstage/backend-plugin-api'; +import { Config } from '@backstage/config'; import { DefaultEventsService, EventBroker, @@ -41,8 +42,8 @@ export class DefaultEventBroker implements EventBroker { * An instance can be passed (required for a mixed mode), otherwise a new instance gets created internally. * @deprecated use `DefaultEventsService` directly instead */ - constructor(logger: LoggerService, events?: EventsService) { - this.events = events ?? DefaultEventsService.create({ logger }); + constructor(logger: LoggerService, config?: Config, events?: EventsService) { + this.events = events ?? DefaultEventsService.create({ logger, config }); } async publish(params: EventParams): Promise { diff --git a/plugins/events-backend/src/service/EventsBackend.ts b/plugins/events-backend/src/service/EventsBackend.ts index 2c93663b46..8ef9007e1e 100644 --- a/plugins/events-backend/src/service/EventsBackend.ts +++ b/plugins/events-backend/src/service/EventsBackend.ts @@ -21,6 +21,7 @@ import { } from '@backstage/plugin-events-node'; import { Logger } from 'winston'; import { DefaultEventBroker } from './DefaultEventBroker'; +import { Config } from '@backstage/config'; /** * A builder that helps wire up all component parts of the event management. @@ -33,8 +34,8 @@ export class EventsBackend { private publishers: EventPublisher[] = []; private subscribers: EventSubscriber[] = []; - constructor(logger: Logger) { - this.eventBroker = new DefaultEventBroker(logger); + constructor(logger: Logger, config?: Config) { + this.eventBroker = new DefaultEventBroker(logger, config); } setEventBroker(eventBroker: EventBroker): EventsBackend { diff --git a/plugins/events-node/README.md b/plugins/events-node/README.md index b07303ff72..0811bde72c 100644 --- a/plugins/events-node/README.md +++ b/plugins/events-node/README.md @@ -27,7 +27,7 @@ import { DefaultEventsService } from '@backstage/plugin-events-node'; function makeCreateEnv(config: Config) { // ... - const eventsService = DefaultEventsService.create({ logger: root }); + const eventsService = DefaultEventsService.create({ logger: root, config }); // ... return (plugin: string): PluginEnvironment => { // ... diff --git a/plugins/events-node/src/service.ts b/plugins/events-node/src/service.ts index 4f758f44e6..a70eb38d97 100644 --- a/plugins/events-node/src/service.ts +++ b/plugins/events-node/src/service.ts @@ -42,9 +42,10 @@ export const eventsServiceFactory = createServiceFactory({ logger: coreServices.logger, lifecycle: coreServices.lifecycle, auth: coreServices.auth, + config: coreServices.rootConfig, }, - async createRootContext({ rootLogger }) { - return DefaultEventsService.create({ logger: rootLogger }); + async createRootContext({ rootLogger, config }) { + return DefaultEventsService.create({ logger: rootLogger, config }); }, async factory( { pluginMetadata, discovery, logger, lifecycle, auth },