diff --git a/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts b/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts index 7a032198a3..11d073400a 100644 --- a/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts +++ b/packages/backend/src/plugins/DemoEventBasedEntityProvider.ts @@ -18,40 +18,36 @@ import { EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; -import { - EventBroker, - EventParams, - EventSubscriber, -} from '@backstage/plugin-events-node'; +import { EventParams, EventsService } from '@backstage/plugin-events-node'; import { Logger } from 'winston'; -export class DemoEventBasedEntityProvider - implements EntityProvider, EventSubscriber -{ +export class DemoEventBasedEntityProvider implements EntityProvider { private readonly logger: Logger; + private readonly events: EventsService; private readonly topics: string[]; constructor(opts: { - eventBroker: EventBroker; + events: EventsService; logger: Logger; topics: string[]; }) { - const { eventBroker, logger, topics } = opts; - this.logger = logger; - this.topics = topics; - eventBroker.subscribe(this); + this.events = opts.events; + this.logger = opts.logger; + this.topics = opts.topics; } - async onEvent(params: EventParams): Promise { - this.logger.info( - `onEvent: topic=${params.topic}, metadata=${JSON.stringify( - params.metadata, - )}, payload=${JSON.stringify(params.eventPayload)}`, - ); - } - - supportsEventTopics(): string[] { - return this.topics; + async subscribe() { + await this.events.subscribe({ + id: 'DemoEventBasedEntityProvider', + topics: this.topics, + onEvent: async (params: EventParams): Promise => { + this.logger.info( + `onEvent: topic=${params.topic}, metadata=${JSON.stringify( + params.metadata, + )}, payload=${JSON.stringify(params.eventPayload)}`, + ); + }, + }); } async connect(_: EntityProviderConnection): Promise { diff --git a/packages/backend/src/plugins/catalog.ts b/packages/backend/src/plugins/catalog.ts index 223acab818..00fe7ff4a0 100644 --- a/packages/backend/src/plugins/catalog.ts +++ b/packages/backend/src/plugins/catalog.ts @@ -28,10 +28,11 @@ export default async function createPlugin( builder.addProcessor(new ScaffolderEntitiesProcessor()); const demoProvider = new DemoEventBasedEntityProvider({ + events: env.events, logger: env.logger, topics: ['example'], - eventBroker: env.eventBroker, }); + await demoProvider.subscribe(); builder.addEntityProvider(demoProvider); const { processingEngine, router } = await builder.build();