{"_id":"rabbitmq-with-retry-and-dlq","_rev":"28-0affdb3e406724acdab4b8b75707e1f5","name":"rabbitmq-with-retry-and-dlq","dist-tags":{"latest":"1.0.27"},"versions":{"1.0.0":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.0","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":"","license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.0","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"1486f0fd67a66c277a3a10c5ee8235f8aebb5edf","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.0.tgz","fileCount":23,"integrity":"sha512-zTjMJNyEuZsjOMuIf3p5NsdH+EeANaNvYXb577NrRjke3Fh87XjcbhvJLTxL9kmemB643pERZ4Gp3WC7quTBXQ==","signatures":[{"sig":"MEUCIFspJyCRHuy+AksDmbcMg4QmUBi2nRI1e2WQyCyurlEtAiEAgi462W4qJa4EpAZPQlXqQcqhVOTnWebPDrgJx6HrYOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103972},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"https://git.antiersolutions.com/utilities/npm-rabbitmq.git","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.0_1763729262548_0.30750748882548407","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.1","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.1","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"6e039a9574a7d4db71b10c78c45eb79ca442a8ea","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.1.tgz","fileCount":23,"integrity":"sha512-QwdWWUq2I837pd6H3+MtpS0nx/Pc6eW8T5ABCS0xVLwEmKXyxQAJM5yRjVEzfbtYLeN35VoAqaGXdqXYaBBXBw==","signatures":[{"sig":"MEUCIQDeNPx+mgbeLf90DF5XpHi1fM60d7gfiSPGAOoRkPXC0wIgAe7fLPo1X3FR+OV5viKAv3cCSrvw9ORGBydpUbTjnAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103798},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"https://git.antiersolutions.com/utilities/npm-rabbitmq.git","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.1_1763729514519_0.8469444640220578","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.2","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.2","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"46d602fb0cc8c673a04a689aaa01c1ac69611c0a","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.2.tgz","fileCount":23,"integrity":"sha512-/7c1/lWUiKAJqHgfbvFg16R9ObZSNp1wems8HyA9GOv3xtyXoi6wPicVK2cbOHfjPTdbOgru+wpg/EvaQaMUEQ==","signatures":[{"sig":"MEQCIHT3AxRGfEvJ+bwJi8c+cl+1/c4abbJY1BfNGjUcFSY0AiBoIBg6x4ogJSPaZ4e3DKB+0Ka2i1EtID/KxuiLkMTewQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144676},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"https://git.antiersolutions.com/utilities/npm-rabbitmq.git","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.2_1763980217641_0.806278816224119","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.3","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.3","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"e22bec918802a943f94cf763bc1517c11a259dc5","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.3.tgz","fileCount":27,"integrity":"sha512-vbT2OZ9X5XR64tSZi9kJQrCDAKyFcf2m6uevypSy9shjyoo7LPJ/MgM3AmIzK3pByzygbJLHX6FsCvpFzNE8tw==","signatures":[{"sig":"MEUCIFlQHepHfaZ7262Ji3twFSiw0Bh6YG1z1XEzqBB4YjH1AiEA8UBsSJll9b1TfxS5oD/DpsgRPgmk0JFiD0NgVDL4lU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154662},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"https://git.antiersolutions.com/utilities/npm-rabbitmq.git","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.3_1763985425740_0.9465365699093913","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.4","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.4","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"94cad055599ea8b79e243a7e61586fd1ed7d7032","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.4.tgz","fileCount":27,"integrity":"sha512-nT9S8JT4YamXATh2bsPsXkocAzUUduKlchWgpiPDT4qQGg5YUpZQoMI9DEgEkcNZHsTyCwFp4tMzXZC/9+8NWQ==","signatures":[{"sig":"MEYCIQDEoMYnipCp/iiyS881HlDhtxMrb6DdY2UCYQHtmZMQtAIhAImHIt2GpdLaSbeT4eoE9sL7IitDE7/x9hZSfhnTPyIH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120724},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"https://git.antiersolutions.com/utilities/npm-rabbitmq.git","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.4_1763988624496_0.6072634618875723","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.5","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.5","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"d2d65e57032d1a4b31ccca025229a19b8ca2107f","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.5.tgz","fileCount":27,"integrity":"sha512-CjPt6mNRn1KppHAgkEOjiVfg4z4d3eZpvPZjPrtbHV3NXN6F6JNI6rv+eGDwTm7COM5UCYApDNsxfbrtU47gHA==","signatures":[{"sig":"MEUCICghiFkeGQ4xA8/tjH5nR5xoFVnY71JhBvT8OXQzZH5rAiEAzQvaPjLoitL0IisKr3mrhkKO4FbDZk56bvejE5vaQ9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120622},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"https://git.antiersolutions.com/utilities/npm-rabbitmq.git","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.5_1763990931541_0.03602219424578035","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.6","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.6","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"1e5b91e2caaf1d34f844d5aebd5ed6ea8cc5fc52","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.6.tgz","fileCount":27,"integrity":"sha512-wt1++HQOH+M8Fo8urwOdNCnwjvdnmys73e31ZG4Qe8jrEjjN+zPpgbSXUtkLTYt3tzDro3h0o+th3Fo5JeqV3A==","signatures":[{"sig":"MEQCIHV4FO4U0uEreqKSwGxALNqrcc4scn/RLb5zp7GCS2cGAiBlUAeKYuKfNm6Sa6mXn+jvaGuiCfHUNeBq9vDa34NlMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131481},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.6_1764070222206_0.0909875986633153","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.7","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.7","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"d6c462516ea45a64222a17ca15f2b95bab1e102d","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.7.tgz","fileCount":27,"integrity":"sha512-RLh1XpsvYiT2W4lHSO1DvTUuYEMXlvxnB5EK1O1+u1RxgNiupkOQSA6oxWlCFVNm02mEK7dmFEw2ojEligyqwg==","signatures":[{"sig":"MEQCIAd1CvmSQQ6YoN7xwmhSpllqXQEPd0rL/M/XXAIvgL6iAiAmMMPA8SdzHx6j6AldSLrSAqPQ4/s6JgjHJFtHZOKsFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122510},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.7_1764071744457_0.23351411350687945","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.8","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.8","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"9134d7ff6c1ec1f036e7fbfe432d30895d118075","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.8.tgz","fileCount":23,"integrity":"sha512-WzaUxlVNkTa5QVXvq9c5GIuoTgncgr3+6H35med73IRgd2SFy0gY48K+NS0lKVM5RBOhJLpvNxPdR5ci2PTzVA==","signatures":[{"sig":"MEUCIDBSzxA55yhjfCOsGiDCcTlmL4LszROFmpK8FSmLn5z+AiEAk9V7aliubqXXSu046hJby4iaokn6fKht+HPECuL5s7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113115},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.8_1764071961516_0.020587782576663605","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.9","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.9","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"cd2fcf6da24ff21843801bbae2e24296769a446d","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.9.tgz","fileCount":31,"integrity":"sha512-f7Ve43QYGyY+QUtCLebxqRYTjkoN0Mck7C+y+cbOu30pv43MOGVj7Y7yPOL99MVxbx5lcna1ZBN0XPUDH6ppfA==","signatures":[{"sig":"MEUCIQCI8zXcDaLhAdTXUEPglBEPBcg40mG+3gy/7xXUG9JixwIgch79DVCT57ZpdWuRnMagjMTZx4+6VjAbWfvpmNPtvp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127334},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.9_1764076956187_0.30287765806991707","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.10","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.10","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"356676e6e57a2ad50f243015b477e6d15656ff02","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.10.tgz","fileCount":35,"integrity":"sha512-ftUlOCFkPSMX8rSJFwmlelz3ni0T2i/rK+WtczuKVbl5BYL1eujEnQ6POQ6AoGOyUZ/IoC2c5dMnfjwkh1O/Dw==","signatures":[{"sig":"MEQCIG8pBGRWKCHhcYAn/t3mubuRYhyQif+BgaM1PA3BdRGqAiBgRrj/2kuMhxv5EYBISxTSfcbeUGbuPGGHt6NMX1t0zA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156188},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2f565db21412b9c3f07d568aeba93476c5dce808","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.10_1764079371371_0.8874288580339789","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.11","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.11","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"bed856c381754747914b5a290bc6b312b17064e3","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.11.tgz","fileCount":35,"integrity":"sha512-Rt+SI1w1N0D6FvlTk6JpVCth7z2JhhTfBzhow0ftX4FAwEdPspDBnL9AvcYthPKgLiVLKuBNFmAjzssnYVxlCg==","signatures":[{"sig":"MEUCIQD9x2MPN+olk6aGJMDQ+kMiBHiiS8u1V5AGeEnOzZ2hKwIgfgDZRyj/UUBVIOC2i1HdQVj2jhMZXKMr1hJdigRxPhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158152},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6a4cfd011f2a40d81e0737a13407e848fba835b","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.11_1764153858505_0.022814406232290807","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.12","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.12","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"5c87ef9776d6a0375ffb17c3ff392dd634a90639","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.12.tgz","fileCount":35,"integrity":"sha512-VyEXe0gXFAUv6TSjfzk6EJhyq73kChcvzoYMRr1fbqsk8oAVU7Pp69FHifQTk2ONSjRO3jqtdxwSmQdV7UKNdQ==","signatures":[{"sig":"MEUCIGTqLSmtUA/mnqi7kXj7qZttB7k+ob7L5gBnIR1SzGDfAiEA2PkeLv6KTgkFoUkNcqoaZtnPGX7/YZlefqegV71eVjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158660},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6a4cfd011f2a40d81e0737a13407e848fba835b","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.2","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.12_1764159643631_0.25006024047400666","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.13","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.13","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"f354babe6e26ffd25849e4417aebd80a0d9c6cf7","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.13.tgz","fileCount":43,"integrity":"sha512-z9PWpd4NJSCCKHh8Jj7Gzc+31CAWne7nSzvud9RFypE55CetzK8PjkLEJ1I4YL2P2//Y17Sg8wA+hz1jckDQBQ==","signatures":[{"sig":"MEUCIH8SxzW0FfiM0oyUOqVut95bxKPUBZQ7WAH6x9IHTmeKAiEA1Z+nJ9KMFfecmYnZj5TEjCC6GWctzF2f2Ibi/TwL0R0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158099},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6a4cfd011f2a40d81e0737a13407e848fba835b","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.13_1764928653169_0.7643701076449378","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.14","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.14","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"27db28200aa96fe9ab9b59a1397051a85c5c4e79","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.14.tgz","fileCount":43,"integrity":"sha512-MrAh3IiLkxgrT5nMMUl551cf9KHAYCD7fX1Y0CopCXRU0R5kktVvR/yIMhBHR3/bWIUdw1otoO1dvyE16ebjhQ==","signatures":[{"sig":"MEQCID/DqJJ2o9QCOxtJ22hEblinhVFKxnzTLN3RtxQ2L/kkAiBsYTqALk1I1ToEPNpP93kY2AdT2V5Pi/PKewqt7xNQLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158127},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6a4cfd011f2a40d81e0737a13407e848fba835b","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","async_hooks":"^1.0.0","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.14_1764929981115_0.1780942901642808","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.15","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.15","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"1ec5bf62f2acb76d95f2cb1f3932644b8a3631b9","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.15.tgz","fileCount":43,"integrity":"sha512-PGeAVD6YqwdEcO64GxoMYqvqTCpiCAp+/ElRStr067U0DkOre4pnOfWCdbKSRpQBmtxSvsIokv8ir9CESvUWEA==","signatures":[{"sig":"MEUCIQCtIEo8A8Oakflv/AwhtjsjFXmgF5Ozs13vO2eB/Z1BCwIgM99UlLdcBa7NJUw363ljEclhSUlPhZF5CW5KklbXG0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158460},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6a4cfd011f2a40d81e0737a13407e848fba835b","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","async_hooks":"^1.0.0","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.15_1764931588831_0.7321018105323891","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.16","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.16","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"310d4300360ecf7720dad56f343454fec367a503","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.16.tgz","fileCount":31,"integrity":"sha512-H1P9ZoyuYp/0TjYLlVJTItiy6ykaeAQfZtpeiN/cKqdpoeLBFnf6h72p/H5ZsWK/vwoFFIASW8hbnteG9AVPRg==","signatures":[{"sig":"MEUCICCpRijNcdmGRukOVznlt1wg99OJV7ljLtIGnz/9XrUBAiEAyKtrUBGd7sW+e0UQ5AoEgIJCPrfDWHfBaM8d2uEf4qw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123356},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6228eaf095b7b53b8142eb4f3b07ac61079bc12","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","async_hooks":"^1.0.0","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.16_1764935227817_0.14908090104823057","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.17","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.17","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"40d70d879660fd80d7897dbf3f3f83738b8629f1","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.17.tgz","fileCount":31,"integrity":"sha512-xYvw+WQeTHCa17eHkqHCMg3Zjrm0O3gPTl6M87KMY1wR/bbn1yrNd4SgR5BDVdK2r+NmNHgL1NSQ9rWQbIRy6Q==","signatures":[{"sig":"MEUCIQDS7BMQG8o6CHsRibgHKFLSIbK/7S+p/0+FcSHwYdigsgIgZnbZ+kXVV7uGbT3dbWp4IGjzFfb2HTGivnn6KQNasbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127812},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6228eaf095b7b53b8142eb4f3b07ac61079bc12","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.17_1764938115197_0.09567492935289912","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.18","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.18","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"a74fa6e7c9f32f420f9358b856268ac2fb2d40e8","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.18.tgz","fileCount":23,"integrity":"sha512-2NBAGNlVMh9le0VBt9Rw43jYfEUXz6Xj75FllNpGZlldzoaC7zfpvhcge9SQnT22/u86lTqZmh5lOWMv64wXxA==","signatures":[{"sig":"MEYCIQDJ1o38CdzZXwvgirGazmOioC2D9lA1dttqkGwNfzX7BwIhANsago5q/rV5+o1Sr2x7MIEbb3+h2ymZ49mQfBVRV/vQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123415},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"f6228eaf095b7b53b8142eb4f3b07ac61079bc12","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.18_1764941200958_0.715892556091146","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.19","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.19","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"8fe0889bb11405c512f45c10320b866a873081cb","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.19.tgz","fileCount":35,"integrity":"sha512-wpdMWi/Lvp5jkyUzAm/0LlGEE99WTWQH3CRxRHWoBIOWd0idaN1TA0q0RGSMeWE4qnKJh56xbT4HW5VUo7+Q+g==","signatures":[{"sig":"MEUCIQD0hyskzdKkx6pRI2bf+HahEupHs5X81wsK0kCDX24QkwIgW+f6sztY8CAsodWrhLalgxLuSdHfwtpKH2z+3WztxJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163841},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"4ec533c1ab159051480230a8f761f980be1a569c","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.19_1765186572662_0.33951206940606826","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.20","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.20","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"a05cf64eff14bcbeb0dc435e83ca0220b167fd26","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.20.tgz","fileCount":35,"integrity":"sha512-yEJkYHX2GGnTflbC0QHpDOOKd0LztvE78BJCpg2LBE18fTpzmP+JpdGpkbq9xK9VO2YmURA86E2txNX/8KoCYA==","signatures":[{"sig":"MEUCIGV5sOjrYvOCBE+EOCLpNYWs2PYA8UcX+SaG5CU/VGbgAiEAtoKCQpr4JQnkXBt0uBD75YTirzp1DQKfnnwV6ceDpnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182874},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"389d58fd15da47013ba8e3df735108a8350baa17","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.20_1765286035949_0.49124163421376443","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.21","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.21","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"3977c28301300c49403d03d2d501b818a5df2c6a","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.21.tgz","fileCount":35,"integrity":"sha512-ykCAOjIDLgtVMzJZ+nPqdH7LuiNXhh2oBWFobAU9ZX7X85y9vr/NieBhzqgEibr7NBsNpEttZQ5rdrij4W+kIQ==","signatures":[{"sig":"MEUCIEqdM3MxmBaGE4vk7LhIxpSeRXF7pqLA+Tlm5XFmqIphAiEAxeS+lT9QF5yNwEdLcrwNLlP2aqhzlsTkYBdX8x3V7Jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180191},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"2d18c4e15782167e0f0402808b3b654a696eb28c","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.21_1765287443385_0.42434816401496356","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.22","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.22","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"11377d6ddbc26701bad41540a0da3f8a986f1476","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.22.tgz","fileCount":35,"integrity":"sha512-caor2bWFtUin2B9qNxRCNVsiFbsdcsitYW9jiTikV45QSdUm2Ee4QMFIGb5MNjvz0WB4vb65QXdsIMEbPwinXw==","signatures":[{"sig":"MEUCIDh+EVHp7iDAWiGpThfrc2D6lV/en+8a0SdHLwb4ee6UAiEA/jZYUv/hqT0LvTOUq9YO6MozPCzJQb9KLWYfFIU7um0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182921},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"344612c003b8e9f6b464ef98d2e400218ba76717","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.22_1765351295399_0.03741537081344526","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.23","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.23","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"f24b7c5b3091056440a896477a3c62e8cda6b390","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.23.tgz","fileCount":35,"integrity":"sha512-u4l+p7aAtv6NNL0egbcmqPGY3SKfgfJN5jZz6iKf4NIIeLBwn4lqvt7ZXf/iilsj3qjzPLcZkLO57+U4TDjwRA==","signatures":[{"sig":"MEQCIFXngzuHTiniPvmD9dzvdHJDlb0HJuJQCk9TnCRDeRcFAiBntuMmQKl9t1VEMO4R3oYdQTmzDNaXIpNCogUF7e4vxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187053},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"344612c003b8e9f6b464ef98d2e400218ba76717","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.23_1765352297934_0.9667643583086476","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.24","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.24","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"13425da01c6bf4d2c7eb5856b9d9a5ae00d39603","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.24.tgz","fileCount":35,"integrity":"sha512-tFPVT3DShNnJS9ww66KtxZvZGb9Z6vZIrZSwIUh8erUKaU7YapliJDmC/Z8F5eZtl0uQx9XCy7kktyjrnKNTHw==","signatures":[{"sig":"MEYCIQCuFcK3hKhFBmxYaZwhoRL0u4HDm9JoUfdQfJpXGN2hnwIhAMt3Mq2hUqKc3HcdpHUkYseoomgRQV9QxzLwojzaoB2v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195504},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"344612c003b8e9f6b464ef98d2e400218ba76717","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.24_1765352676109_0.5090949016450188","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.25","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.25","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"db6227fd6ea5d8662d3e19f95037fe614d8a214e","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.25.tgz","fileCount":35,"integrity":"sha512-p4LfIPuDw00a4Jl3ScSrAk+R0CvwRKnEqlU/G311OhtWQN7aMYN+xNpPSnP6YW3781ML3Ldx6FdNZT9Ls+NEHA==","signatures":[{"sig":"MEUCIQDKByuzGoGAa5bt7NC9KtwEDD/lifvB2xb5zzQVkaz9XwIgf9JO4Isj8Lj7LTgBaJEtkxUkGuYWpIeQLH5lk/tqJNc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201961},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"36e85f2dbd69aa397ce6562ef6888597c22ce0f9","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.25_1765366131502_0.6470709921199145","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.26","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","_id":"rabbitmq-with-retry-and-dlq@1.0.26","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"dist":{"shasum":"4c395b291ac94257e32ec2b314f5bd0516a30899","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.26.tgz","fileCount":23,"integrity":"sha512-6jyx6VRA/R1tQ/BKNNLjGHjI+Q2yQXJfMADzVBUZgZC8RV+yW3y3OuLUiBqgGC72QfRoyOVdlxE3ig5heyKJQA==","signatures":[{"sig":"MEUCIFqNpMtsba7oZ+Q53SuAttqPA3VOHWSDTrDNG58FVdRmAiEA4Iynq3uBobHeRjgpuSw54HByG5iYP+OXYtb4+3DrMJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168896},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"e7adec12861d019f899a5c0509f67b1b26a8b5c2","scripts":{"dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","build":"tsc","start":"ts-node index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.4","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","directories":{},"_nodeVersion":"23.9.0","dependencies":{"amqplib":"^0.10.3","amqp-connection-manager":"^4.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.10.0","ts-node-dev":"^2.0.0","@types/amqplib":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.26_1767940917622_0.012554430308189257","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"rabbitmq-with-retry-and-dlq","version":"1.0.27","description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"start":"ts-node index.ts","build":"tsc","dev":"ts-node-dev --respawn index.ts","test":"ts-node test.ts","prepublishOnly":"npm run build"},"keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"author":{"name":"Satnam Singh"},"license":"MIT","repository":{"type":"git","url":""},"dependencies":{"amqp-connection-manager":"^4.1.14","amqplib":"^0.10.3"},"devDependencies":{"@types/amqplib":"^0.10.1","@types/node":"^20.10.0","ts-node":"^10.9.2","ts-node-dev":"^2.0.0","typescript":"^5.3.3"},"engines":{"node":">=16.0.0"},"gitHead":"c17417baf5b757a4dab11206a0149b51598dcb87","_id":"rabbitmq-with-retry-and-dlq@1.0.27","_nodeVersion":"23.9.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-xFX/N4FRcKVC5mjNykm17S8RDCr8FCfsgSrvaH3H3HvAdnClfE8lLYrZGDFmFNw5yiUDxcFX5aaKEghi4xKKAQ==","shasum":"482e33824bf09d41e10dcfd6dd44b97df6becd20","tarball":"https://registry.npmjs.org/rabbitmq-with-retry-and-dlq/-/rabbitmq-with-retry-and-dlq-1.0.27.tgz","fileCount":23,"unpackedSize":161269,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH1rBf6y1JyWAPDB0u7rnLK43c76iwzIHK49L5hBhnQ9AiBs7WYkM9RORHiuFiyEeHs/cUxfyha6CAaj1kLRWUI6rA=="}]},"_npmUser":{"name":"mrigind","email":"ssmrigind@gmail.com"},"directories":{},"maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rabbitmq-with-retry-and-dlq_1.0.27_1770795298942_0.5938998588569073"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-21T12:47:42.547Z","modified":"2026-02-11T07:34:59.197Z","1.0.0":"2025-11-21T12:47:42.732Z","1.0.1":"2025-11-21T12:51:54.758Z","1.0.2":"2025-11-24T10:30:17.848Z","1.0.3":"2025-11-24T11:57:05.930Z","1.0.4":"2025-11-24T12:50:24.660Z","1.0.5":"2025-11-24T13:28:51.740Z","1.0.6":"2025-11-25T11:30:22.388Z","1.0.7":"2025-11-25T11:55:44.629Z","1.0.8":"2025-11-25T11:59:21.699Z","1.0.9":"2025-11-25T13:22:36.372Z","1.0.10":"2025-11-25T14:02:51.552Z","1.0.11":"2025-11-26T10:44:18.768Z","1.0.12":"2025-11-26T12:20:43.818Z","1.0.13":"2025-12-05T09:57:33.312Z","1.0.14":"2025-12-05T10:19:41.277Z","1.0.15":"2025-12-05T10:46:28.984Z","1.0.16":"2025-12-05T11:47:07.991Z","1.0.17":"2025-12-05T12:35:15.348Z","1.0.18":"2025-12-05T13:26:41.169Z","1.0.19":"2025-12-08T09:36:12.813Z","1.0.20":"2025-12-09T13:13:56.103Z","1.0.21":"2025-12-09T13:37:23.534Z","1.0.22":"2025-12-10T07:21:35.549Z","1.0.23":"2025-12-10T07:38:18.103Z","1.0.24":"2025-12-10T07:44:36.240Z","1.0.25":"2025-12-10T11:28:51.649Z","1.0.26":"2026-01-09T06:41:57.784Z","1.0.27":"2026-02-11T07:34:59.081Z"},"author":{"name":"Satnam Singh"},"license":"MIT","keywords":["rabbitmq","retry","dead-letter-queue","dlq","message-queue","amqp","exponential-backoff","typescript","eventemitter"],"repository":{"type":"git","url":""},"description":"RabbitMQ implementation with dynamic retry logic and Dead Letter Queue support","maintainers":[{"name":"mrigind","email":"ssmrigind@gmail.com"}],"readme":"# RabbitMQ with Retry and Dead Letter Queue\n\nA production-ready TypeScript RabbitMQ library with automatic retry, exponential backoff, and dead letter queue support.\n\n## Features\n\n- ✨ **Lazy Loading** - Automatic connection on first use\n- 🔄 **Smart Retry** - Exponential/linear backoff with jitter\n- 💀 **Dead Letter Queue** - Auto-routing after max retries\n- 🔌 **Auto-Reconnection** - Handles network issues automatically\n- 📦 **TypeScript** - Full type safety\n- 🎯 **Exchange Support** - Direct, topic, fanout, headers\n- 🏭 **Industry Best Practice** - Separation of concerns (Publisher→Exchange, Consumer→Queue)\n\n## Installation\n\n```bash\nnpm install rabbitmq-with-retry-and-dlq\n```\n\n---\n\n## Quick Start (Best Practice)\n\n```typescript\nimport {\n  initializeRabbitMQ,\n  publisher,\n  consumer,\n} from 'rabbitmq-with-retry-and-dlq';\n\n// 1. Initialize connection\nawait initializeRabbitMQ('amqp://localhost:5672');\n\n// 2. Publisher: Assert exchange\nawait publisher.assertExchange('orders', { exchangeType: 'topic' });\n\n// 3. Consumer: Setup queue with exchange and routing keys\nawait consumer.setupQueue({\n  queueName: 'orders-processor',\n  exchangeName: 'orders',\n  exchangeType: 'topic',\n  routingKeys: ['order.created', 'order.updated'],\n  retryConfig: { maxRetries: 5, retryDelayMs: 2000 },\n});\n\n// 4. Consumer: Start consuming\nawait consumer.consumeQueue({\n  queueName: 'orders-processor',\n  onMessage: async (message) => {\n    await processOrder(message);\n  },\n});\n\n// 5. Publisher: Publish messages\nawait publisher.publishToExchange({\n  exchangeName: 'orders',\n  routingKey: 'order.created',\n  message: { orderId: 123 },\n});\n```\n\n---\n\n## Usage\n\n### 1. Initialize (Required - Call Once with Await)\n\n**You must call `await initializeRabbitMQ()` once** in your application setup or helper file:\n\n```typescript\nimport {\n  initializeRabbitMQ,\n  isPublisherConnected,\n  isConsumerConnected,\n} from 'rabbitmq-with-retry-and-dlq';\n\ntry {\n  // Call once at application startup (in your helper/setup file)\n  // Use await - this establishes the connection and waits for it to be ready\n  await initializeRabbitMQ('amqp://user:pass@localhost:5672');\n\n  // Check connection status (both should be true after await)\n  console.log('Publisher connected:', isPublisherConnected()); // true\n  console.log('Consumer connected:', isConsumerConnected()); // true\n} catch (error) {\n  // Connection failed (wrong URL, RabbitMQ not running, timeout, etc.)\n  console.error('Failed to connect to RabbitMQ:', error);\n  process.exit(1); // Fail fast\n}\n```\n\n**Error Handling:**\n\n- Throws error if URL is wrong\n- Throws error if RabbitMQ is not running\n- Throws error if connection timeout (default: 30 seconds)\n- Returns only when connections are established\n\n### 2. Lazy Loading (Automatic Connection)\n\nAfter initialization, just use publisher/consumer - connection happens automatically:\n\n```typescript\nimport { publisher, consumer } from 'rabbitmq-with-retry-and-dlq';\n\n// No additional setup needed - just use it!\n// First call automatically establishes connection\nawait publisher.publishToQueue({\n  queueName: 'orders',\n  message: { orderId: 123 },\n});\n```\n\n---\n\n## Industry Best Practice: Separation of Concerns\n\nThis library follows the RabbitMQ best practice pattern:\n\n- **Publisher** → Owns **Exchanges** (knows the topic/domain)\n- **Consumer** → Owns **Queues** and **Bindings** (decides what to subscribe to)\n\nThis is cleaner because:\n\n1. Publishers don't need to know about queues\n2. Consumers can create their own queues and choose their bindings\n3. Multiple consumers can bind differently to the same exchange\n\n### Publisher: Assert Exchange\n\n```typescript\nimport { publisher } from 'rabbitmq-with-retry-and-dlq';\n\n// Assert a single exchange\nawait publisher.assertExchange('orders');\n\n// Assert with exchange type\nawait publisher.assertExchange('events', { exchangeType: 'topic' });\n\n// Assert multiple exchanges\nawait publisher.assertExchange(['orders', 'payments', 'notifications']);\n\n// With options\nawait publisher.assertExchange('orders', {\n  exchangeType: 'direct', // 'direct' | 'topic' | 'fanout' | 'headers' (default: 'direct')\n  durable: true, // Survives broker restart (default: true)\n});\n```\n\n### Consumer: Assert Exchanges (Recommended!)\n\n```typescript\nimport { consumer } from 'rabbitmq-with-retry-and-dlq';\n\n// IMPORTANT: Assert exchanges on consumer's connection BEFORE binding\n// This prevents \"NOT_FOUND - no exchange\" race condition errors\nawait consumer.assertExchange('orders', { exchangeType: 'topic' });\nawait consumer.assertExchange('payments', { exchangeType: 'direct' });\n\n// Or assert multiple exchanges at once\nawait consumer.assertExchange(['orders', 'payments'], {\n  exchangeType: 'direct',\n});\n```\n\n> **Why?** Publisher and consumer use separate connections. Even if publisher creates the exchange, the consumer's connection might not see it immediately. Asserting exchanges on the consumer's connection ensures they exist before binding.\n\n### Consumer: Setup Queue (RECOMMENDED - Best Practice)\n\n**Use `setupQueue()` for complete setup in one atomic operation** - prevents race conditions and supports multiple routing keys:\n\n```typescript\n// ✅ RECOMMENDED: Complete setup in one call\nawait consumer.setupQueue({\n  queueName: 'orders-processor',\n  exchangeName: 'orders',\n  exchangeType: 'topic',\n  routingKeys: ['order.created', 'order.updated', 'order.cancelled'], // Multiple routing keys!\n  retryConfig: {\n    maxRetries: 5,\n    retryDelayMs: 2000,\n    backoffStrategy: 'exponential',\n    jitterMs: 1000,\n  },\n});\n\n// Then consume (queue already set up)\nawait consumer.consumeQueue({\n  queueName: 'orders-processor',\n  onMessage: async (message) => {\n    console.log('Processing order:', message);\n    await processOrder(message);\n  },\n});\n```\n\n**What `setupQueue()` does:**\n\n1. ✅ Asserts exchange\n2. ✅ Creates queue with retry/DLQ infrastructure\n3. ✅ Binds queue to exchange with all routing keys\n4. ✅ All in ONE atomic operation (no race conditions)\n\n### Consumer: Assert Queues (Alternative - More Control)\n\nUse `assertQueues()` when you need more control or want to add bindings dynamically:\n\n```typescript\n// Assert a single queue\nawait consumer.assertQueues('orders-worker');\n\n// Assert multiple queues\nawait consumer.assertQueues(['orders-worker', 'payments-worker']);\n\n// Assert queue with exchange binding and retry/DLQ configuration\nawait consumer.assertQueues('orders-worker', {\n  exchangeName: 'orders',\n  exchangeType: 'direct',\n  routingKey: 'order.created', // Single routing key\n  retryConfig: {\n    maxRetries: 5,\n    retryDelayMs: 2000,\n    backoffStrategy: 'exponential',\n  },\n});\n```\n\n### Consumer: Bind Queue to Exchange (For Additional Bindings)\n\nUse `bindQueue()` to add more routing key bindings after initial setup:\n\n```typescript\n// IMPORTANT: Call consumer.assertExchange() FIRST to prevent race conditions!\n\n// Bind queue to exchange with routing key\nawait consumer.bindQueue('orders-worker', 'orders', 'order.created', {\n  exchangeType: 'topic', // Ensures exchange exists (recommended)\n});\n\n// Bind with pattern (for topic exchanges)\nawait consumer.bindQueue('all-orders', 'events', 'order.*', {\n  exchangeType: 'topic',\n});\n\n// Add multiple bindings to same queue\nawait consumer.bindQueue('orders-worker', 'orders', 'order.created');\nawait consumer.bindQueue('orders-worker', 'orders', 'order.updated');\nawait consumer.bindQueue('orders-worker', 'orders', 'order.cancelled');\n```\n\n### Complete Best Practice Example (RECOMMENDED)\n\n```typescript\n// === PUBLISHER SIDE ===\n// Publisher only knows about exchanges\nawait publisher.assertExchange('orders', { exchangeType: 'topic' });\n\nawait publisher.publishToExchange({\n  exchangeName: 'orders',\n  routingKey: 'order.created',\n  message: { orderId: 123, amount: 99.99 },\n});\n\n// === CONSUMER SIDE ===\n// Step 1: Setup queue with exchange and multiple routing keys (RECOMMENDED)\nawait consumer.setupQueue({\n  queueName: 'orders-processor',\n  exchangeName: 'orders',\n  exchangeType: 'topic',\n  routingKeys: ['order.created', 'order.updated'], // Multiple keys!\n  retryConfig: { maxRetries: 3, retryDelayMs: 5000 },\n});\n\n// Step 2: Start consuming (queue already set up)\nawait consumer.consumeQueue({\n  queueName: 'orders-processor',\n  onMessage: async (message) => {\n    console.log('Processing order:', message);\n    await processOrder(message);\n  },\n});\n```\n\n### Alternative: Step-by-Step Setup\n\nIf you need more granular control, use separate methods:\n\n```typescript\n// Step 1: Assert exchanges on consumer's connection (defensive)\nawait consumer.assertExchange('orders', { exchangeType: 'topic' });\n\n// Step 2: Create queues with retry/DLQ config\nawait consumer.assertQueues('orders-processor', {\n  retryConfig: { maxRetries: 3, retryDelayMs: 5000 },\n});\n\n// Step 3: Bind queues to exchanges (can add multiple routing keys)\nawait consumer.bindQueue('orders-processor', 'orders', 'order.created', {\n  exchangeType: 'topic',\n});\nawait consumer.bindQueue('orders-processor', 'orders', 'order.updated', {\n  exchangeType: 'topic',\n});\n\n// Step 4: Start consuming\nawait consumer.consumeQueue({\n  queueName: 'orders-processor',\n  onMessage: async (message) => {\n    await processOrder(message);\n  },\n});\n```\n\n---\n\n## Direct Queue Publishing (Without Exchange)\n\nFor simple point-to-point messaging without exchanges:\n\n### Publish to Queue\n\n```typescript\n// Note: Queue should be set up by consumer first using assertQueues() or setupQueue()\n\nawait publisher.publishToQueue({\n  queueName: 'orders',\n  message: {\n    orderId: 'ORDER-123',\n    amount: 99.99,\n  },\n  options: {\n    persistent: true, // Survives broker restart (default: true)\n    priority: 5, // 0-10 priority (optional)\n    expiration: '5000', // TTL in ms (optional)\n  },\n  // Optional: retryConfig if queue wasn't set up with retry\n  retryConfig: {\n    maxRetries: 5,\n    retryDelayMs: 2000,\n  },\n});\n```\n\n### Publish to Exchange\n\n```typescript\n// Publisher only needs exchange and routing key (not queue!)\nawait publisher.publishToExchange({\n  exchangeName: 'orders_exchange',\n  exchangeType: 'direct',\n  routingKey: 'order.created',\n  message: { orderId: 'ORDER-456' },\n  options: {\n    persistent: true,\n    priority: 5,\n  },\n});\n```\n\n### Consumer (Best Practice)\n\n```typescript\n// Set up error handler FIRST\nconsumer.on('error', (errorEvent) => {\n  console.error('RabbitMQ Error:', errorEvent);\n  if (errorEvent.type === 'DLQ_FAILED') {\n    console.error('CRITICAL: Message lost!');\n  }\n});\n\n// Step 1: Setup queue with exchange and routing keys\nawait consumer.setupQueue({\n  queueName: 'orders-processor',\n  exchangeName: 'orders_exchange',\n  exchangeType: 'direct',\n  routingKeys: ['order.created', 'order.updated'],\n  retryConfig: {\n    maxRetries: 5,\n    retryDelayMs: 2000,\n    backoffStrategy: 'exponential',\n  },\n});\n\n// Step 2: Start consuming (queue already set up)\nawait consumer.consumeQueue({\n  queueName: 'orders-processor',\n  onMessage: async (message, messageInfo) => {\n    console.log('Processing:', message);\n\n    // Your business logic\n    await processOrder(message);\n\n    // Success = auto-ack\n    // Throw error = retry with backoff → DLQ\n  },\n  options: {\n    prefetch: 5, // Max unacked messages (default: 5)\n    noAck: false, // Auto-ack (default: false)\n  },\n});\n```\n\n### 7. Graceful Shutdown (Required!)\n\n```typescript\nimport { closeRabbitMQ } from 'rabbitmq-with-retry-and-dlq';\n\nconst shutdown = async () => {\n  console.log('Shutting down...');\n  await closeRabbitMQ();\n  process.exit(0);\n};\n\nprocess.on('SIGTERM', shutdown);\nprocess.on('SIGINT', shutdown);\n```\n\n---\n\n## Retry Configuration\n\n### Retry Config Keys\n\n```typescript\ninterface RetryConfig {\n  maxRetries: number; // Required: max retry attempts\n  retryDelayMs?: number; // Optional: base delay in ms (default: 5000)\n  backoffStrategy?: string; // Optional: 'exponential' | 'linear' (default: 'exponential')\n  maxDelayMs?: number; // Optional: max delay cap (default: 300000)\n  jitterMs?: number; // Optional: random jitter range (default: 0)\n}\n```\n\n### Exponential Backoff Example\n\n```typescript\nretryConfig: {\n  maxRetries: 4,\n  retryDelayMs: 1000,\n  backoffStrategy: 'exponential'\n}\n// Delays: 1s → 2s → 4s → 8s → DLQ\n```\n\n### Linear Backoff Example\n\n```typescript\nretryConfig: {\n  maxRetries: 4,\n  retryDelayMs: 5000,\n  backoffStrategy: 'linear'\n}\n// Delays: 5s → 10s → 15s → 20s → DLQ\n```\n\n### With Jitter (Prevents Thundering Herd)\n\n```typescript\nretryConfig: {\n  maxRetries: 3,\n  retryDelayMs: 2000,\n  backoffStrategy: 'exponential',\n  jitterMs: 1000\n}\n// Retry 1: 2000ms + random(0-1000ms) = 2000-3000ms\n// Retry 2: 4000ms + random(0-1000ms) = 4000-5000ms\n// Retry 3: 8000ms + random(0-1000ms) = 8000-9000ms\n```\n\n---\n\n## Complete Example (Best Practice Pattern)\n\n```typescript\nimport express from 'express';\nimport {\n  initializeRabbitMQ,\n  closeRabbitMQ,\n  publisher,\n  consumer,\n  isPublisherConnected,\n  isConsumerConnected,\n  type RabbitMQErrorEvent,\n} from 'rabbitmq-with-retry-and-dlq';\n\nconst app = express();\napp.use(express.json());\n\nasync function startApp() {\n  try {\n    // 1. Initialize RabbitMQ connection (required - use await)\n    console.log('Connecting to RabbitMQ...');\n    await initializeRabbitMQ('amqp://user:pass@localhost:5672');\n\n    console.log('✓ Publisher connected:', isPublisherConnected()); // true\n    console.log('✓ Consumer connected:', isConsumerConnected()); // true\n\n    // 2. Set up error handler\n    consumer.on('error', (errorEvent: RabbitMQErrorEvent) => {\n      console.error('RabbitMQ Error:', errorEvent);\n    });\n\n    // 3. Publisher: Assert exchange (publisher owns exchanges)\n    await publisher.assertExchange('orders', { exchangeType: 'topic' });\n    console.log('✓ Publisher exchange asserted');\n\n    // 4. Consumer: Setup queue with exchange and routing keys (RECOMMENDED)\n    await consumer.setupQueue({\n      queueName: 'orders-processor',\n      exchangeName: 'orders',\n      exchangeType: 'topic',\n      routingKeys: ['order.created', 'order.updated'],\n      retryConfig: {\n        maxRetries: 5,\n        retryDelayMs: 2000,\n        backoffStrategy: 'exponential',\n        jitterMs: 1000,\n      },\n    });\n    console.log('✓ Queue setup complete');\n\n    // 5. Start consumer (queue already set up)\n    await consumer.consumeQueue({\n      queueName: 'orders-processor',\n      onMessage: async (message) => {\n        console.log('Processing order:', message);\n        await processOrder(message);\n      },\n    });\n    console.log('✓ Consumer started');\n\n    // 8. Start server\n    app.listen(3000, () => {\n      console.log('✓ Server running on port 3000');\n    });\n  } catch (error) {\n    console.error('❌ Failed to start app:', error);\n    console.error('   Make sure RabbitMQ is running and URL is correct');\n    process.exit(1);\n  }\n}\n\n// API endpoint - Publisher only knows about exchanges (not queues!)\napp.post('/orders', async (req, res) => {\n  try {\n    await publisher.publishToExchange({\n      exchangeName: 'orders',\n      routingKey: 'order.created',\n      message: req.body,\n    });\n    res.json({ success: true });\n  } catch (error) {\n    console.error('Failed to publish:', error);\n    res.status(500).json({ error: 'Failed to publish order' });\n  }\n});\n\n// Graceful shutdown\nconst shutdown = async () => {\n  console.log('Shutting down...');\n  await closeRabbitMQ();\n  process.exit(0);\n};\n\nprocess.on('SIGTERM', shutdown);\nprocess.on('SIGINT', shutdown);\n\n// Helper function\nasync function processOrder(order: any) {\n  // Your business logic here\n  console.log('Order processed:', order.orderId);\n}\n\n// Start the app\nstartApp();\n```\n\n---\n\n## API Reference\n\n### Publisher Methods\n\n| Method                            | Description                                                    |\n| --------------------------------- | -------------------------------------------------------------- |\n| `assertExchange(names, options?)` | Create exchange(s) - Publisher owns exchanges                  |\n| `publishToExchange(config)`       | Publish to exchange with routing key                           |\n| `publishToQueue(config)`          | Publish directly to queue (queue should be set up by consumer) |\n| `publishBatch(configs)`           | Publish multiple messages                                      |\n| `close()`                         | Close publisher connection                                     |\n\n### Consumer Methods\n\n| Method                                             | Description                                                                                          |\n| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `setupQueue(config)`                               | **⭐ RECOMMENDED** - Complete setup: exchange + queue + bindings + retry/DLQ in one atomic operation |\n| `assertExchange(names, options?)`                  | Assert exchange(s) on consumer connection (defensive)                                                |\n| `assertQueues(names, options?)`                    | Create queue(s) with optional exchange binding and retry/DLQ config                                  |\n| `bindQueue(queue, exchange, routingKey, options?)` | Bind queue to exchange (for additional routing keys)                                                 |\n| `deleteQueues(names, options?)`                    | Delete queue(s) and related retry/DLQ queues                                                         |\n| `consumeQueue(config)`                             | Start consuming from queue (queue must be set up first)                                              |\n| `consumeMultipleQueues(config)`                    | Consume from multiple queues                                                                         |\n| `consumeWithPattern(exchange, pattern, handler)`   | Consume with pattern matching (topic)                                                                |\n| `getConsumerStats()`                               | Get consumer statistics                                                                              |\n| `close()`                                          | Close consumer connection                                                                            |\n\n---\n\n## Additional Options\n\n### Exchange Options (for assertExchange)\n\n```typescript\n{\n  exchangeType: 'direct',  // 'direct' | 'topic' | 'fanout' | 'headers' (default: 'direct')\n  durable: true,           // Exchange survives restart (default: true)\n}\n```\n\n### Queue Options (for assertQueues)\n\n```typescript\n{\n  durable: true,        // Queue survives restart (default: true)\n  exclusive: false,     // Exclusive to connection (default: false)\n  autoDelete: false,    // Auto-delete when unused (default: false)\n  retryConfig: {...},   // Optional: retry and DLQ configuration\n}\n```\n\n### Bind Queue (consumer.bindQueue)\n\n```typescript\nawait consumer.bindQueue(\n  'queue-name', // Queue to bind\n  'exchange-name', // Exchange to bind to\n  'routing.key', // Routing key or pattern (for topic exchanges)\n  {\n    // Options (optional)\n    exchangeType: 'topic', // If provided, asserts exchange before binding (RECOMMENDED)\n    durable: true, // Exchange durability (default: true)\n  }\n);\n\n// Pattern examples for topic exchanges:\n// 'order.*'         - matches order.created, order.updated\n// 'order.#'         - matches order.created, order.created.v2\n// '*.created'       - matches order.created, payment.created\n```\n\n> **Note:** When publisher and consumer use separate connections, there can be race conditions where the consumer tries to bind before the exchange is fully created. Specifying `exchangeType` in bindQueue ensures the exchange exists on the consumer's connection (idempotent operation).\n\n### Publish Options\n\n```typescript\n{\n  persistent: true,     // Message survives restart (default: true)\n  priority: 5,          // Priority 0-10 (optional)\n  expiration: '5000',   // TTL in ms (optional)\n}\n```\n\n### Consumer Options\n\n```typescript\n{\n  prefetch: 5,          // Max unacked messages (default: 5)\n  noAck: false,         // Auto-acknowledge (default: false)\n  exclusive: false,     // Exclusive consumer (default: false)\n  durable: true,        // Queue survives restart (default: true)\n}\n```\n\n### Error Event Types\n\n- `RETRY_QUEUE_FAILED` - Failed to send to retry queue\n- `DLQ_FAILED` - Failed to send to DLQ (CRITICAL!)\n- `MESSAGE_PROCESSING_FAILED` - Processing error\n- `PUBLISH_FAILED` - Publish failed\n- `CONNECTION_ERROR` - Connection error\n\n---\n\n## Queue Management\n\n```typescript\n// Delete queue (includes retry and DLQ by default)\nawait consumer.deleteQueues('orders');\n\n// Delete multiple queues\nawait consumer.deleteQueues(['orders', 'payments']);\n\n// Delete only main queue\nawait consumer.deleteQueues('orders', {\n  includeRetry: false,\n  includeDLQ: false,\n});\n```\n\n---\n\n## Important Notes\n\n### Required (Must Implement)\n\n- ⚠️ **Must call `await initializeRabbitMQ(url)` with try/catch** - throws error on connection failure\n- ⚠️ **Must implement graceful shutdown handlers** (`SIGTERM`, `SIGINT`)\n- ⚠️ **Must monitor DLQ failures** (indicates message loss)\n\n### Error Handling\n\n- `initializeRabbitMQ()` throws error if:\n  - RabbitMQ URL is wrong\n  - RabbitMQ is not running\n  - Connection timeout (default: 30 seconds)\n- Always wrap in try/catch for fail-fast behavior\n\n### Automatic (No Action Needed)\n\n- ✅ Auto-reconnection on connection loss\n- ✅ Lazy loading - connects on first use (after initialization)\n- ✅ Message durability with `persistent: true`\n- ✅ Queue durability with `durable: true`\n- ✅ Thread-safe initialization\n\n### Best Practices\n\n- Call `initializeRabbitMQ(url)` once in your setup/helper file\n- **Use separation of concerns pattern:**\n  - Publisher → `assertExchange()` + `publishToExchange()` (owns exchanges)\n  - Consumer → `setupQueue()` or `assertQueues()` + `bindQueue()` (owns queues and bindings)\n- **Recommended workflow:**\n  1. Setup infrastructure at startup: `consumer.setupQueue()` or `consumer.assertQueues()`\n  2. Start consuming: `consumer.consumeQueue()`\n- Set `retryConfig` in `setupQueue()` or `assertQueues()` - auto-used when processing\n- `assertExchange()`, `assertQueues()`, `setupQueue()`, and `bindQueue()` are idempotent - safe to call multiple times\n- Use exponential backoff with jitter to prevent thundering herd\n- Always set up error event handlers before consuming\n- Use graceful shutdown in production\n\n---\n\n## Troubleshooting\n\n### Error: PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange'\n\n**Problem:**\n\n```\nError: Operation failed: QueueDeclare; 406 (PRECONDITION_FAILED) with message\n\"PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue\n'my_queue' in vhost '/': received 'my_exchange' but current is ''\"\n```\n\n**Cause:**\nThe queue already exists in RabbitMQ with different configuration arguments than what your code is trying to set.\n\n**Solution:**\nDelete the existing queue and let your code recreate it with the correct configuration.\n\n**Option 1 - Using the utility script:**\n\n```bash\nnpx ts-node scripts/delete-queue.ts my_queue\n```\n\n**Option 2 - Using RabbitMQ Management UI:**\n\n1. Navigate to `http://localhost:15672` (default credentials: guest/guest)\n2. Go to the \"Queues\" tab\n3. Find and delete the problematic queue\n\n**Option 3 - Using RabbitMQ CLI:**\n\n```bash\nrabbitmqadmin delete queue name=my_queue\n```\n\n**Option 4 - Using this library:**\n\n```typescript\nimport { consumer } from 'rabbitmq-with-retry-and-dlq';\n\nawait consumer.deleteQueues('my_queue', {\n  includeRetry: true,\n  includeDLQ: true,\n});\n```\n\n**Prevention:**\nAlways use `consumer.setupQueue()` or `consumer.assertQueues()` to create queues with the proper retry configuration before consuming.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}