address code review comments

Signed-off-by: Brian Fletcher <brian@roadie.io>
This commit is contained in:
Brian Fletcher
2023-03-08 15:58:40 +00:00
parent c251ef8007
commit a444c53a03
11 changed files with 51 additions and 35 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ You will need to add the following to the backend configuration `#makeCreateEnv`
```diff
// packages/backend/src/index.ts
+ const eventBroker = new InMemoryEventBroker(root.child({ type: 'plugin' }));
+ const eventBroker = new DefaultEventBroker(root.child({ type: 'plugin' }));
```
Then update plugin environment to include the event broker.
+11 -11
View File
@@ -12,6 +12,17 @@ import express from 'express';
import { HttpPostIngressOptions } from '@backstage/plugin-events-node';
import { Logger } from 'winston';
// @public
export class DefaultEventBroker implements EventBroker {
constructor(logger: Logger);
// (undocumented)
publish(params: EventParams): Promise<void>;
// (undocumented)
subscribe(
...subscribers: Array<EventSubscriber | Array<EventSubscriber>>
): void;
}
// @public
export class EventsBackend {
constructor(logger: Logger);
@@ -43,15 +54,4 @@ export class HttpPostIngressEventPublisher implements EventPublisher {
// (undocumented)
setEventBroker(eventBroker: EventBroker): Promise<void>;
}
// @public
export class InMemoryEventBroker implements EventBroker {
constructor(logger: Logger);
// (undocumented)
publish(params: EventParams): Promise<void>;
// (undocumented)
subscribe(
...subscribers: Array<EventSubscriber | Array<EventSubscriber>>
): void;
}
```
+1 -1
View File
@@ -22,4 +22,4 @@
export { EventsBackend } from './service/EventsBackend';
export { HttpPostIngressEventPublisher } from './service/http';
export { InMemoryEventBroker } from './service/InMemoryEventBroker';
export { DefaultEventBroker } from './service/DefaultEventBroker';
@@ -17,15 +17,15 @@
import { getVoidLogger } from '@backstage/backend-common';
import { TestEventSubscriber } from '@backstage/plugin-events-backend-test-utils';
import { EventParams, EventSubscriber } from '@backstage/plugin-events-node';
import { InMemoryEventBroker } from './InMemoryEventBroker';
import { DefaultEventBroker } from './DefaultEventBroker';
const logger = getVoidLogger();
describe('InMemoryEventBroker', () => {
describe('DefaultEventBroker', () => {
it('passes events to interested subscribers', () => {
const subscriber1 = new TestEventSubscriber('test1', ['topicA', 'topicB']);
const subscriber2 = new TestEventSubscriber('test2', ['topicB', 'topicC']);
const eventBroker = new InMemoryEventBroker(logger);
const eventBroker = new DefaultEventBroker(logger);
eventBroker.subscribe(subscriber1);
eventBroker.subscribe(subscriber2);
@@ -86,7 +86,7 @@ describe('InMemoryEventBroker', () => {
})();
const errorSpy = jest.spyOn(logger, 'error');
const eventBroker = new InMemoryEventBroker(logger);
const eventBroker = new DefaultEventBroker(logger);
eventBroker.subscribe(subscriber1);
await eventBroker.publish({ topic, eventPayload: '1' });
@@ -22,14 +22,14 @@ import {
import { Logger } from 'winston';
/**
* In-memory event broker which will pass the event to all registered subscribers
* In process event broker which will pass the event to all registered subscribers
* interested in it.
* Events will not be persisted in any form.
*
* @public
*/
// TODO(pjungermann): add prom metrics? (see plugins/catalog-backend/src/util/metrics.ts, etc.)
export class InMemoryEventBroker implements EventBroker {
export class DefaultEventBroker implements EventBroker {
constructor(private readonly logger: Logger) {}
private readonly subscribers: {
@@ -20,7 +20,7 @@ import {
EventSubscriber,
} from '@backstage/plugin-events-node';
import { Logger } from 'winston';
import { InMemoryEventBroker } from './InMemoryEventBroker';
import { DefaultEventBroker } from './DefaultEventBroker';
/**
* A builder that helps wire up all component parts of the event management.
@@ -33,7 +33,7 @@ export class EventsBackend {
private subscribers: EventSubscriber[] = [];
constructor(logger: Logger) {
this.eventBroker = new InMemoryEventBroker(logger);
this.eventBroker = new DefaultEventBroker(logger);
}
setEventBroker(eventBroker: EventBroker): EventsBackend {
@@ -29,7 +29,7 @@ import {
EventSubscriber,
HttpPostIngressOptions,
} from '@backstage/plugin-events-node';
import { InMemoryEventBroker } from './InMemoryEventBroker';
import { DefaultEventBroker } from './DefaultEventBroker';
import Router from 'express-promise-router';
import { HttpPostIngressEventPublisher } from './http';
@@ -113,7 +113,7 @@ export const eventsPlugin = createBackendPlugin({
router.use(eventsRouter);
const eventBroker =
extensionPoint.eventBroker ?? new InMemoryEventBroker(winstonLogger);
extensionPoint.eventBroker ?? new DefaultEventBroker(winstonLogger);
eventBroker.subscribe(extensionPoint.subscribers);
[extensionPoint.publishers, http]