From e44203c485fb802314b70cdfbcddfb3d93bd231c Mon Sep 17 00:00:00 2001 From: "Kyryll O." Date: Fri, 19 Jun 2026 16:17:47 +0300 Subject: [PATCH] fix: emit() publishes to exchange instead of sendToQueue NestJS v10 RMQ client uses sendToQueue which sends to a specific queue (core_queue), bypassing the exchange. Messages were never delivered to other plugins' queues bound to the exchange. Changed emit() to use amqplib to publish directly to system_events exchange with {pattern, data} format that NestJS RMQ server expects. --- package.json | 2 +- src/backend/services/core.service.ts | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 759b4a0..3a5d1b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@erp/plugin-sdk", - "version": "1.11.2", + "version": "1.11.3", "main": "dist/index.js", "types": "dist/index.d.ts", "bin": { diff --git a/src/backend/services/core.service.ts b/src/backend/services/core.service.ts index d02c305..6286de2 100644 --- a/src/backend/services/core.service.ts +++ b/src/backend/services/core.service.ts @@ -331,9 +331,19 @@ export class CoreService { source: this.serviceName, timestamp: Date.now(), }; - this.client.emit(pattern, event).subscribe({ - error: (err) => this.logger.error(`Failed to emit event ${pattern}:`, err), - }); + try { + const conn = await amqp.connect(this.getRMQUrl()); + const ch = await conn.createChannel(); + await ch.assertExchange('system_events', 'topic', { durable: true }); + ch.publish('system_events', pattern, Buffer.from(JSON.stringify({ + pattern, + data: event, + }))); + await ch.close(); + await conn.close(); + } catch (err: any) { + this.logger.error(`Failed to emit event ${pattern}: ${err.message}`); + } } async auditLog(action: string, resource: string, details?: any): Promise {