feat: adding AMQP heartbeat/retry/retrydelay support #549
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR updates the AMQP configuration and connection handling to improve reliability and flexibility.
Changes
Configuration Struct Update:
Configuration File Update:
Updated examples/carbon-relay-ng.ini to include amqp_heartbeat, amqp_retry, and amqp_retrydelay.
AMQP Connection Handling:
Added retry logic for connection attempts.
Configured heartbeat for the AMQP connection.
Added a goroutine to monitor and reconnect if the connection is closed.
Benefits
Logs
Using the new branch/code, I am able to build and make, and the tests seem good. Additionally, I have been using this code in production for many days without any issues.
The result is that now, if I bring RabbitMQ down, carbon-relay-ng notices the session is down and keeps retrying to connect based on the retry delay until it is able to reconnect:
Thanks for maintaining this project! Please, review and provide feedback if needed.