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.
Description
Pull Request Title:
feature/abstract-queue-optionsDescription:
Motivation:
The primary motivation behind this change is to introduce a more flexible and extensible architecture for queue management within our project. By abstracting queue options and client creation, we can easily support multiple queue backends in the future without significant modifications to the existing codebase. This approach enhances the project's scalability and maintainability.
Changes:
Abstract Queue Options:
QueueOptionsinterface with aValidate()method to ensure each queue option type can be validated independently.Queuestruct to encapsulate queue options and client interface, allowing for more flexible client creation.Unified Client Creation:
Newfunction inqueue.goto create a newQueueinstance, with support for default client creation based on the provided options.NewRabbitMQfunction to utilize theValidate()method fromRabbitOptions, ensuring consistent validation logic.Refactored Tests:
Queuestruct andNewfunction for creating queue clients.Benefits:
QueueOptionsandQueueInterface.QueueOptionsinterface ensures that all queue configurations are validated consistently.Overall, this change significantly improves the project's architecture, paving the way for future enhancements and integrations with minimal disruption.