1. /**
  2. * Reloads message queue configuration with retry logic.
  3. * @param {function} reloadConfig - Function to reload the configuration. Should return a promise.
  4. * @param {number} maxRetries - Maximum number of retry attempts.
  5. * @param {number} delayMs - Delay between retries in milliseconds.
  6. * @returns {Promise<void>} - A promise that resolves when the configuration is successfully reloaded or rejects after maxRetries attempts.
  7. */
  8. async function reloadMessageQueueConfig(reloadConfig, maxRetries = 3, delayMs = 1000) {
  9. let retries = 0;
  10. while (retries < maxRetries) {
  11. try {
  12. // Attempt to reload the configuration.
  13. await reloadConfig();
  14. console.log("Message queue configuration reloaded successfully.");
  15. return; // Exit the function if successful.
  16. } catch (error) {
  17. console.error(`Failed to reload message queue configuration. Retry attempt ${retries + 1}/${maxRetries}:`, error);
  18. retries++;
  19. if (retries < maxRetries) {
  20. // Wait before retrying.
  21. await new Promise(resolve => setTimeout(resolve, delayMs));
  22. } else {
  23. // Reached the maximum number of retries.
  24. console.error("Failed to reload message queue configuration after multiple retries.");
  25. throw error; // Re-throw the error to signal failure.
  26. }
  27. }
  28. }
  29. }
  30. // Example usage (replace with your actual reloadConfig function)
  31. // async function myReloadConfig() {
  32. // // Replace with your logic to reload the message queue configuration
  33. // console.log("Reloading config...");
  34. // await new Promise(resolve => setTimeout(resolve, 500)); // Simulate a delay
  35. // console.log("Config reloaded.");
  36. // }
  37. // reloadMessageQueueConfig(myReloadConfig, 5, 2000)
  38. // .then(() => console.log("Configuration reload process completed."))
  39. // .catch(err => console.error("Configuration reload failed after all retries:", err));

Add your comment