{"_id":"@aarjavjain/rabbitmq","_rev":"15-31b0ebbf2a20b50ecf838a7929b02f68","name":"@aarjavjain/rabbitmq","dist-tags":{"latest":"1.1.4"},"versions":{"1.0.0":{"name":"@aarjavjain/rabbitmq","version":"1.0.0","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.0","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"d61d143ec139a937a7e730d65e35357a449955cb","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.0.tgz","fileCount":3,"integrity":"sha512-bSGek2oLCYNJPoRkPSfavZKR9stvXoTnmrw3OKym1AcBYnNGRkCHXZRuH1HsGws60ns65XINfNwLMptdsmD2eg==","signatures":[{"sig":"MEUCIQDCR4NT4ueFyTSyZheqOV3iKp2v3Dz57L5fc31iEvPAwQIgJXp96cCirC3WGQiTYfVxD5goHplKOJM1hz2EU+zxius=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5400},"main":"index.js","type":"commonjs","types":"index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"amqplib":"^1.0.3","ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0","@types/amqplib":"^0.10.8"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.0_1777652421280_0.3401857943363411","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aarjavjain/rabbitmq","version":"1.0.1","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.1","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"16ead5ea9c06d21ca5cedc2915aa11b355e3dfbe","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.1.tgz","fileCount":3,"integrity":"sha512-N1V6HQXr7kxpM2HNSOXSfqwPiC4tqBZSx5joCLIxt6ThHD+GIXsnyQDFGYCXUN/Sa8KoRDq3x6zFalUWfYWBew==","signatures":[{"sig":"MEQCIDYQiGsNJ55KTGHyuSR9LnIgY/Q5TJH3fo9SSWa2tk/FAiA8ERo2CfyXLfJQnugYB+7DwGMElKj5J6T91dojxCeWGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5416},"main":"index.js","type":"commonjs","types":"index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"amqplib":"^1.0.3","ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0","@types/amqplib":"^0.10.8"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.1_1777652970848_0.24104945699369051","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aarjavjain/rabbitmq","version":"1.0.2","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.2","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"20cc89a405977a8c57207d2e1b4c8c1bf9190a97","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.2.tgz","fileCount":3,"integrity":"sha512-Vu188jxeNfOZSbLr016yid512YL9D+o0x/oQREp+OqcRLi4drCwd+vOjdCeuh3oEuzf0dYz2cIG4Mbq+oWYSvA==","signatures":[{"sig":"MEQCIC/ypEK1WbLoA8xqUiwH3XwPYqpFkKV/WZ5nFsbxpPUlAiBPI6+0ut3hUt36rsM6Hv9UqaPF+oP0VWUFbd9uCD3TTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5440},"main":"index.js","type":"commonjs","types":"index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","dependencies":{"amqplib":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0","@types/amqplib":"^0.10.8"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.2_1777653388129_0.4393564670477037","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aarjavjain/rabbitmq","version":"1.0.3","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.3","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"925aef4c63eb96b415852639aa53dd53885ee1f1","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.3.tgz","fileCount":7,"integrity":"sha512-2+1LRZ95vuBDTbfmXdH/G8Q4HaBxKdy8PjqvCcUDlTHtrcYcUEDqERy6cJvR+NQYT++TuLP0YtXxlYONzo0vLw==","signatures":[{"sig":"MEUCIGP30O2hQdIVPZhZH6okNh6aj5iGHgzxVw1dTeXEx2QuAiEAq3ySLc4gk7lHgGG2W8797Y+miGVeS6JBIeZII56vbRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13359},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","dependencies":{"amqplib":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0","@types/amqplib":"^0.10.8"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.3_1777653545927_0.9621548670619966","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aarjavjain/rabbitmq","version":"1.0.4","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.4","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"8bdbf030b166ba98d41587573b16905c6e910fa2","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.4.tgz","fileCount":7,"integrity":"sha512-mSUVeVxBprP2Ni/Y0pLHjISeUZVaIoR4KB0Nb5F+eE4r+wse2W3+kP29YxDRGz8jYNm7WG35kOTffWWzvtWPpw==","signatures":[{"sig":"MEUCIE8qrsuLED31i5yAFchsagW9rBx8XkSwYVfMsP0MD4j+AiEA0v9AUpDagdO4LeaCNw/yHphlb3PMzqrMoxTUH+k2W6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13359},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","dependencies":{"amqplib":"^1.0.3","@types/amqplib":"^0.10.8"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.4_1777653762040_0.38775179903889834","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aarjavjain/rabbitmq","version":"1.0.5","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.5","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"53fef6c53c17313fe002f27e7fa6e863dc1428b3","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.5.tgz","fileCount":8,"integrity":"sha512-SoVZuETi/D5OcGN1AP6+OmaMX+TgC7tsX0/T5g+DxukmXX1i/4nQFBqSPALC8I3W1ebcMkwAqy4odidaaPZn/w==","signatures":[{"sig":"MEQCIG4UOnPA7tZRQUyI24JHIQxNEhG6x9sI7YW0EXGknZf6AiAVPbFA5Kt9wynufU1T7LYLhXwR1JTcbTw/rmYAMGm/8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17650},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","dependencies":{"amqplib":"^1.0.3","@types/amqplib":"^0.10.8"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.5_1777705666481_0.6555519650711594","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aarjavjain/rabbitmq","version":"1.0.6","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.0.6","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"42ed165d6c45d75b5bd9c12149f88426e360ff76","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.0.6.tgz","fileCount":8,"integrity":"sha512-Igho0MDsv2cQb/2ElCDcuUVQQvtRrnJYkbsa1xufyfoUpkhb1inXTn27uVCsdA+rUZ9S8LjGBeWeLlX72kuq1Q==","signatures":[{"sig":"MEUCIQDhVKGcNZqxJBOHIwYzSXYjG6+53tB8f7cz0PfYu+tHowIgO7jfz4mIgAY+NMC38uTcv63TeLcabtbs/R2OgUoU6PE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24046},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","dependencies":{"amqplib":"^1.0.3","@types/amqplib":"^0.10.8"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.0.6_1777708118939_0.4704885002951691","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aarjavjain/rabbitmq","version":"1.1.2","keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","_id":"@aarjavjain/rabbitmq@1.1.2","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"dist":{"shasum":"13e2dd902c1db24f4ac15cb3d7e9b6f423181f5a","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.1.2.tgz","fileCount":18,"integrity":"sha512-bnyxCf74+jqW4pvKQutLu7Crro7oY5EUx1wWruY9opIEcwLQyy9JBTWSR9stu1VoPdtLr096M3k9NX576pO+Hw==","signatures":[{"sig":"MEYCIQDecA3AZTbPbLy9zriAAFZyRZUjNf7OWkSc33Ino+cP4AIhAKadUExz/vC+/eLZC8eFgN8aGKw+4dO0FQVCCXPsejD/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41898},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"_npmVersion":"11.6.0","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","directories":{},"_nodeVersion":"22.20.0","dependencies":{"amqplib":"^1.0.3","@types/amqplib":"^0.10.8"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/rabbitmq_1.1.2_1777711986388_0.7230899136189255","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@aarjavjain/rabbitmq","version":"1.1.4","description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/Aarjav638/-aarjavjain-rabbitmq.git"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","dev":"tsc --watch"},"keywords":["microservices","rabbitMq","message queues"],"author":{"name":"Aarjav Jain"},"license":"ISC","type":"commonjs","dependencies":{"amqplib":"^1.0.3","@types/amqplib":"^0.10.8"},"devDependencies":{"@types/node":"^25.6.0","ts-node":"^10.9.2","typescript":"^6.0.3"},"_id":"@aarjavjain/rabbitmq@1.1.4","gitHead":"3e513fc260cdb04a555520c87b8210163f8bef3e","bugs":{"url":"https://github.com/Aarjav638/-aarjavjain-rabbitmq/issues"},"homepage":"https://github.com/Aarjav638/-aarjavjain-rabbitmq#readme","_nodeVersion":"22.20.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-ig3rs4qyCnOTxwN5en1n55ghXPLkqaSyAPrNWYeDrPWvQPUSuvgVZYYgAVBR/D0yFabiBfcFVh1SKxePOhJVoA==","shasum":"514d2a38a3cf69916cdfedd508733398a17fee6f","tarball":"https://registry.npmjs.org/@aarjavjain/rabbitmq/-/rabbitmq-1.1.4.tgz","fileCount":14,"unpackedSize":29969,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCbJKxPPTkZXzYiLcJA94sKbZdaPQEw1adRxwMV0ajxOwIhAISujc3CaswDlN7F59iG7eLdgGlTTVZ+PqM4eaSRJTES"}]},"_npmUser":{"name":"aarjavjain638","email":"anshjain638@gmail.com"},"directories":{},"maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rabbitmq_1.1.4_1777720554035_0.9283117497362912"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-01T16:20:21.182Z","modified":"2026-05-02T11:15:54.311Z","1.0.0":"2026-05-01T16:20:21.408Z","1.0.1":"2026-05-01T16:29:30.975Z","1.0.2":"2026-05-01T16:36:28.286Z","1.0.3":"2026-05-01T16:39:06.102Z","1.0.4":"2026-05-01T16:42:42.188Z","1.0.5":"2026-05-02T07:07:46.617Z","1.0.6":"2026-05-02T07:48:39.095Z","1.1.0":"2026-05-02T08:42:28.402Z","1.1.1":"2026-05-02T08:50:39.734Z","1.1.2":"2026-05-02T08:53:06.571Z","1.1.3":"2026-05-02T11:14:41.849Z","1.1.4":"2026-05-02T11:15:54.170Z"},"author":{"name":"Aarjav Jain"},"license":"ISC","keywords":["microservices","rabbitMq","message queues"],"description":"This is a wrapper package on the top of amqplib to allow a singleton instance with in microservices","maintainers":[{"name":"aarjavjain638","email":"anshjain638@gmail.com"}],"readme":"# @aarjavjain/rabbitmq\r\n\r\nA lightweight TypeScript wrapper built on top of `amqplib` for RabbitMQ communication in Node.js microservices.\r\n\r\nThis package helps create a **singleton RabbitMQ client per microservice** with clean APIs for:\r\n\r\n- Connecting to RabbitMQ\r\n- Queue creation\r\n- Exchange creation\r\n- Publishing queue messages\r\n- Publishing events\r\n- Consuming queue messages\r\n- Consuming events\r\n- Consumer cancellation\r\n- Graceful disconnects\r\n- Health checks\r\n- TypeScript support\r\n\r\n---\r\n\r\n# Features\r\n\r\n- Built on top of `amqplib`\r\n- Singleton-friendly architecture\r\n- Safe shared connection initialization\r\n- Queue auto assertion\r\n- Exchange auto assertion\r\n- Generic typed publish / consume methods\r\n- Queue + Event driven messaging support\r\n- Prefetch support\r\n- Consumer cancel support\r\n- Connection health check\r\n- Clean class-based API\r\n- Works well in Node.js microservices\r\n\r\n---\r\n\r\n# Installation\r\n\r\n```bash\r\nnpm install @aarjavjain/rabbitmq\r\n```\r\n\r\n---\r\n\r\n# Requirements\r\n\r\n- Node.js 18+\r\n- RabbitMQ Server running\r\n\r\nInstall RabbitMQ locally using Docker:\r\n\r\n```bash\r\ndocker run -d --hostname rabbit --name rabbitmq \\\r\n-p 5672:5672 -p 15672:15672 rabbitmq:management\r\n```\r\n\r\nRabbitMQ Dashboard:\r\n\r\n```txt\r\nhttp://localhost:15672\r\n```\r\n\r\nDefault Credentials:\r\n\r\n```txt\r\nUsername: guest\r\nPassword: guest\r\n```\r\n\r\n---\r\n\r\n# Quick Start\r\n\r\n## Create Client\r\n\r\n```ts\r\nimport RabbitMQ from \"@aarjavjain/rabbitmq\";\r\n\r\nexport const rabbitClient = new RabbitMQ({\r\n  config: {\r\n    hostname: \"localhost\",\r\n    username: \"guest\",\r\n    password: \"guest\",\r\n    port: 5672,\r\n  },\r\n  serviceName: \"Post Service\",\r\n  queues: [\"media\"],\r\n  exchanges: [\"domain.events\"],\r\n});\r\n```\r\n\r\n---\r\n\r\n# Connect\r\n\r\n```ts\r\nawait rabbitClient.connect();\r\n```\r\n\r\n---\r\n\r\n# Connect With Options\r\n\r\n```ts\r\nawait rabbitClient.connect({\r\n  exchangeType: \"topic\",\r\n  prefetch: 1,\r\n});\r\n```\r\n\r\n---\r\n\r\n# Queue Messaging\r\n\r\n## Publish Message\r\n\r\n```ts\r\nawait rabbitClient.publishMessage(\"media\", {\r\n  postId: 101,\r\n  imageUrl: \"example.jpg\",\r\n});\r\n```\r\n\r\n## Consume Message\r\n\r\n```ts\r\nconst consumerTag = await rabbitClient.consumeMessage<{\r\n  postId: number;\r\n  imageUrl: string;\r\n}>(\"media\", async (data) => {\r\n  console.log(data.postId);\r\n  console.log(data.imageUrl);\r\n});\r\n```\r\n\r\n---\r\n\r\n# Event Messaging\r\n\r\n## Publish Event\r\n\r\n```ts\r\nawait rabbitClient.publishEvent(\"domain.events\", \"post.created\", {\r\n  postId: 101,\r\n  title: \"Hello World\",\r\n});\r\n```\r\n\r\n## Consume Event\r\n\r\n```ts\r\nconst consumerTag = await rabbitClient.consumeEvent<{\r\n  postId: number;\r\n  title: string;\r\n}>(\"search.queue\", \"domain.events\", \"post.created\", async (data) => {\r\n  console.log(data.title);\r\n});\r\n```\r\n\r\n---\r\n\r\n# Cancel Consumer\r\n\r\n```ts\r\nawait rabbitClient.cancelConsumer(consumerTag);\r\n```\r\n\r\n---\r\n\r\n# Disconnect\r\n\r\n```ts\r\nawait rabbitClient.disconnect();\r\n```\r\n\r\n---\r\n\r\n# Health Check\r\n\r\n```ts\r\nrabbitClient.isConnected();\r\n```\r\n\r\nReturns:\r\n\r\n```txt\r\ntrue / false\r\n```\r\n\r\n---\r\n\r\n# API Reference\r\n\r\n# Constructor\r\n\r\n```ts\r\nnew RabbitMQ({\r\n  config,\r\n  serviceName?,\r\n  queues?,\r\n  exchanges?\r\n});\r\n```\r\n\r\n---\r\n\r\n## Constructor Options\r\n\r\n| Field       | Type                      | Required | Description                             |\r\n| ----------- | ------------------------- | -------- | --------------------------------------- |\r\n| config      | string \\| Options.Connect | Yes      | RabbitMQ URL or config object           |\r\n| serviceName | string                    | No       | Used in logs                            |\r\n| queues      | string[]                  | No       | Queues to auto-create during connect    |\r\n| exchanges   | string[]                  | No       | Exchanges to auto-create during connect |\r\n\r\n---\r\n\r\n# Methods\r\n\r\n## connect()\r\n\r\nConnects to RabbitMQ and creates a channel.\r\n\r\n```ts\r\nawait rabbitClient.connect();\r\n```\r\n\r\n### With Options\r\n\r\n```ts\r\nawait rabbitClient.connect({\r\n  assertOptions: { durable: true },\r\n  exchangeType: \"topic\",\r\n  exchangeAssertOptions: { durable: true },\r\n  prefetch: 1,\r\n});\r\n```\r\n\r\n### Exchange Types\r\n\r\n- `direct` → Exact routing key match\r\n- `topic` → Wildcard routing\r\n- `headers` → Header-based routing\r\n- `fanout` → Broadcast to all queues\r\n\r\n---\r\n\r\n## publishMessage()\r\n\r\nPublishes a message to a queue.\r\n\r\n```ts\r\nawait rabbitClient.publishMessage(\"queue\", payload);\r\n```\r\n\r\nReturns:\r\n\r\n```txt\r\ntrue / false\r\n```\r\n\r\n---\r\n\r\n## consumeMessage()\r\n\r\nStarts consuming messages from a queue.\r\n\r\n```ts\r\nconst consumerTag = await rabbitClient.consumeMessage(\r\n  \"queue\",\r\n  async (msg) => {},\r\n);\r\n```\r\n\r\nReturns:\r\n\r\n```txt\r\nconsumerTag | false\r\n```\r\n\r\n---\r\n\r\n## publishEvent()\r\n\r\nPublishes an event to an exchange using routing key.\r\n\r\n```ts\r\nawait rabbitClient.publishEvent(\"domain.events\", \"user.created\", payload);\r\n```\r\n\r\nReturns:\r\n\r\n```txt\r\ntrue / false\r\n```\r\n\r\n---\r\n\r\n## consumeEvent()\r\n\r\nConsumes events from an exchange.\r\n\r\n```ts\r\nconst consumerTag = await rabbitClient.consumeEvent(\r\n  \"email.queue\",\r\n  \"domain.events\",\r\n  \"user.created\",\r\n  async (msg) => {},\r\n);\r\n```\r\n\r\nReturns:\r\n\r\n```txt\r\nconsumerTag | false\r\n```\r\n\r\n---\r\n\r\n## cancelConsumer()\r\n\r\nStops an active consumer.\r\n\r\n```ts\r\nawait rabbitClient.cancelConsumer(consumerTag);\r\n```\r\n\r\n---\r\n\r\n## disconnect()\r\n\r\nGracefully closes channel and connection.\r\n\r\n```ts\r\nawait rabbitClient.disconnect();\r\n```\r\n\r\n---\r\n\r\n## isConnected()\r\n\r\nChecks whether connection and channel are active.\r\n\r\n```ts\r\nrabbitClient.isConnected();\r\n```\r\n\r\nReturns:\r\n\r\n```txt\r\ntrue / false\r\n```\r\n\r\n---\r\n\r\n# Example Microservice Structure\r\n\r\n```txt\r\nAUTH_SERVICE\r\nPOST_SERVICE\r\nMEDIA_SERVICE\r\nSEARCH_SERVICE\r\nNOTIFICATION_SERVICE\r\n```\r\n\r\nEach service can create its own singleton instance:\r\n\r\n```ts\r\nexport const rabbitClient = new RabbitMQ(...);\r\n```\r\n\r\n---\r\n\r\n# Example with Environment Variables\r\n\r\n```ts\r\nimport RabbitMQ from \"@aarjavjain/rabbitmq\";\r\n\r\nexport const rabbitClient = new RabbitMQ({\r\n  config: {\r\n    hostname: process.env.RABBIT_HOST,\r\n    username: process.env.RABBIT_USER,\r\n    password: process.env.RABBIT_PASS,\r\n    port: Number(process.env.RABBIT_PORT),\r\n  },\r\n  serviceName: \"Auth Service\",\r\n});\r\n```\r\n\r\n---\r\n\r\n# Best Practices\r\n\r\n- Create one RabbitMQ instance per microservice\r\n- Connect during service startup\r\n- Disconnect on graceful shutdown\r\n- Use queues for commands / jobs\r\n- Use exchanges for events\r\n- Keep queue names consistent\r\n- Use prefetch for workers\r\n- Use durable queues in production\r\n\r\n---\r\n\r\n# Example Use Cases\r\n\r\n- Send emails asynchronously\r\n- Process media uploads\r\n- Notification jobs\r\n- Background workers\r\n- Service-to-service communication\r\n- Event-driven microservices\r\n\r\n---\r\n\r\n# Planned Improvements\r\n\r\n- Retry queues\r\n- Dead letter queues (DLQ)\r\n- Auto reconnect\r\n- Delayed messages\r\n- Confirm channels\r\n- Metrics support\r\n- Structured logging\r\n- Schema validation hooks\r\n\r\n---\r\n\r\n# Author\r\n\r\n**Aarjav Jain**\r\n\r\n---\r\n\r\n# License\r\n\r\nISC\r\n","readmeFilename":"README.md","homepage":"https://github.com/Aarjav638/-aarjavjain-rabbitmq#readme","repository":{"type":"git","url":"git+https://github.com/Aarjav638/-aarjavjain-rabbitmq.git"},"bugs":{"url":"https://github.com/Aarjav638/-aarjavjain-rabbitmq/issues"}}