diff --git a/src/Service.ts b/src/Service.ts index c586a0e..411f100 100644 --- a/src/Service.ts +++ b/src/Service.ts @@ -547,8 +547,12 @@ export class Service extends Root { } const subject = `${this.serviceName}.${Method.settings.action}`; + const isRace = Method.settings.options?.race; + const isNotWebStreamRequest = !Method.settings.options?.useStream?.request; + const isNotWebStreamResponse = !Method.settings.options?.useStream?.response; + const queue = isRace && isNotWebStreamRequest && isNotWebStreamResponse ? {} : { queue: this.serviceName }; + const subscription = this.broker.subscribe(subject, queue); - const subscription = this.broker.subscribe(subject, { queue: this.serviceName }); this.subscriptions.push(subscription); for await (const message of subscription) { const { payload, baggage } = JSONCodec>().decode(message.data); diff --git a/src/interfaces.ts b/src/interfaces.ts index a4dcd8b..f3af14d 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -15,6 +15,7 @@ export interface MethodOptions { request?: boolean; response?: boolean; }; + race?: boolean; } export interface MethodSettings {