1. /**
  2. * Cleans up artifacts from message queues.
  3. *
  4. * @param {object} config Configuration object containing queue details.
  5. * @param {string} config.queueName The name of the queue to clean.
  6. * @param {string} config.connectionString The connection string for the message queue.
  7. * @param {string} config.cleanupStrategy The strategy to use for cleanup (e.g., 'deleteOldMessages', 'deleteDeadLetters').
  8. * @param {number} config.maxOldMessages The maximum number of old messages to delete (if applicable).
  9. */
  10. async function cleanupMessageQueue(config) {
  11. try {
  12. // Validate configuration
  13. if (!config || !config.queueName || !config.connectionString || !config.cleanupStrategy) {
  14. console.error("Invalid configuration provided.");
  15. return;
  16. }
  17. console.log(`Starting cleanup for queue: ${config.queueName}`);
  18. switch (config.cleanupStrategy) {
  19. case 'deleteOldMessages':
  20. await deleteOldMessages(config.queueName, config.connectionString, config.maxOldMessages);
  21. break;
  22. case 'deleteDeadLetters':
  23. await deleteDeadLetters(config.queueName, config.connectionString);
  24. break;
  25. default:
  26. console.warn(`Unknown cleanup strategy: ${config.cleanupStrategy}. Skipping cleanup.`);
  27. return;
  28. }
  29. console.log(`Cleanup completed for queue: ${config.queueName}`);
  30. } catch (error) {
  31. console.error(`Error during cleanup for queue ${config.queueName}:`, error);
  32. // Optionally, implement retry logic or alert a monitoring system here.
  33. }
  34. }
  35. /**
  36. * Deletes old messages from the queue.
  37. * @param {string} queueName The name of the queue.
  38. * @param {string} connectionString The connection string.
  39. * @param {number} maxOldMessages The maximum number of old messages to delete.
  40. */
  41. async function deleteOldMessages(queueName, connectionString, maxOldMessages) {
  42. // Placeholder for queue deletion logic. Replace with actual queue API calls.
  43. console.log(`Deleting old messages from queue ${queueName} with max ${maxOldMessages}`);
  44. // Simulate an asynchronous operation
  45. await new Promise(resolve => setTimeout(resolve, 500));
  46. console.log(`Finished deleting old messages from queue ${queueName}`);
  47. }
  48. /**
  49. * Deletes dead-letter messages from the queue.
  50. * @param {string} queueName The name of the queue.
  51. * @param {string} connectionString The connection string.
  52. */
  53. async function deleteDeadLetters(queueName, connectionString) {
  54. // Placeholder for dead-letter deletion logic. Replace with actual queue API calls.
  55. console.log(`Deleting dead-letter messages from queue ${queueName}`);
  56. // Simulate an asynchronous operation
  57. await new Promise(resolve => setTimeout(resolve, 500));
  58. console.log(`Finished deleting dead-letter messages from queue ${queueName}`);
  59. }
  60. // Example usage:
  61. // cleanupMessageQueue({
  62. // queueName: 'myQueue',
  63. // connectionString: 'your_connection_string',
  64. // cleanupStrategy: 'deleteOldMessages',
  65. // maxOldMessages: 100
  66. // });
  67. // cleanupMessageQueue({
  68. // queueName: 'myQueue',
  69. // connectionString: 'your_connection_string',
  70. // cleanupStrategy: 'deleteDeadLetters'
  71. // });

Add your comment