diff --git a/packages/microservices/constants.ts b/packages/microservices/constants.ts index 3e65795a70d..96f8b2fa331 100644 --- a/packages/microservices/constants.ts +++ b/packages/microservices/constants.ts @@ -52,3 +52,6 @@ export const MQTT_WILDCARD_ALL = '#'; export const ECONNREFUSED = 'ECONNREFUSED'; export const CONN_ERR = 'CONN_ERR'; export const EADDRINUSE = 'EADDRINUSE'; + +export const CONNECTION_FAILED_MESSAGE = + 'Connection to transport failed. Trying to reconnect...'; diff --git a/packages/microservices/server/server-rmq.ts b/packages/microservices/server/server-rmq.ts index becc255bd79..18ca16eb96d 100644 --- a/packages/microservices/server/server-rmq.ts +++ b/packages/microservices/server/server-rmq.ts @@ -5,8 +5,10 @@ import { } from '@nestjs/common/utils/shared.utils'; import { CONNECT_EVENT, - DISCONNECTED_RMQ_MESSAGE, + CONNECT_FAILED_EVENT, + CONNECTION_FAILED_MESSAGE, DISCONNECT_EVENT, + DISCONNECTED_RMQ_MESSAGE, NO_MESSAGE_HANDLER, RQM_DEFAULT_IS_GLOBAL_PREFETCH_COUNT, RQM_DEFAULT_NOACK, @@ -95,6 +97,10 @@ export class ServerRMQ extends Server implements CustomTransportStrategy { this.logger.error(DISCONNECTED_RMQ_MESSAGE); this.logger.error(err); }); + this.server.on(CONNECT_FAILED_EVENT, (err: any) => { + this.logger.error(CONNECTION_FAILED_MESSAGE); + this.logger.error(err); + }); } public createClient(): T { diff --git a/packages/microservices/test/server/server-rmq.spec.ts b/packages/microservices/test/server/server-rmq.spec.ts index 5a0ded6272d..085e4d795b9 100644 --- a/packages/microservices/test/server/server-rmq.spec.ts +++ b/packages/microservices/test/server/server-rmq.spec.ts @@ -52,6 +52,10 @@ describe('ServerRMQ', () => { server.listen(callbackSpy); expect(onStub.getCall(1).args[0]).to.be.equal('disconnect'); }); + it('should bind "connectFailed" event to handler', () => { + server.listen(callbackSpy); + expect(onStub.getCall(2).args[0]).to.be.equal('connectFailed'); + }); describe('when "start" throws an exception', () => { it('should call callback with a thrown error as an argument', () => { const error = new Error('random error');