Comments (6)
Thanks for the example code, I'll try to incorporate improved retry and connection logic into the library in the coming week
from nestjs.
Hi,
I've done it in fairly simple way:
async connectToAmqp(retry = 1): Promise<amqplib.Connection> {
if (retry > this.config.maxRetries) {
this.logger.error('Maximum AMQP connection retries reached!');
throw new Error('Maximum AMQP connection retries reached!');
}
this.logger.debug(`Connecting to AMQP. ${retry} try.`);
try {
const connection = await amqplib.connect(this.config.uri);
connection.on('close', async () => {
this.readiness = false;
this.logger.warn('AMQP disconnected. Will try to reconnect...');
this.connection = await this.connectToAmqp();
});
this.readiness = true;
return connection;
} catch (e) {
this.logger.debug(`Could not connect to AMQP.`, e);
await waitFor(this.config.reconnectDelay * retry);
return this.connectToAmqp(retry + 1);
}
}
from nestjs.
Hey @murbanowicz I think it makes sense for this to be natively supported by the module. How do you currently implement retry/reconnection behavior in your RabbitMQ connected applications? Maybe if you share a snippet I can use that as a starting point
from nestjs.
I recommend you consider incorporating amqp-connection-manager - https://www.npmjs.com/package/amqp-connection-manager
from nestjs.
I created a PR for that if you're interested - #80
from nestjs.
Connection management is now possible thanks to amqp-connection-manager and the awesome contributions from @azuker
from nestjs.
Related Issues (20)
- @golevelup/ts-jest default mocks return an empty object which is inconsistent with jest.fn() which returns undefined.
- @golevelup/nestjs-rabbitmq- error when publish message: Channel closed
- ts-jest - When function is called with a mock, toHaveBeenCalledWith() always succeed even when it should not
- rabbitmq: allow per subscriber/handler deserializer customization HOT 1
- RabbitMQ AmqpConnection access from child module
- Wildcard routing stopped working. RabbitMQ
- rabbitmq: support specifying exchange per routing key in RabbitSubscribe
- Single Channel Configuration Across Multiple @RabbitSubscribe Decorators Not Working as Expected
- No delivery mode option on AmqpConnection.request method HOT 2
- RabbitMQ: RabbitSubscribe using a handler name without corresponding handler config asserts randomized queues HOT 3
- rabbitmq: consumerTags are not cleaned up on connection/channel disconnect
- rabbitmq: canceled consumers are resumed if connection/channel reconnects HOT 1
- rabbitmq: direct sending to queue without the need for exchanges HOT 1
- rabbitmq: binding a queue to exchange without a routingKey
- ts-jest: Cannot create mock of a class which has private dependencies in constructor
- rabbitmq: handlers didn't works in app-non-pub HOT 1
- golevelup/nestjs-stripe: project can not compile
- Stripe Test Webhook
- Stripe webhooks - "undefined" is not valid JSON HOT 2
- How should I use this within RabbitSubscribe method?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nestjs.