UNPKG

rmq-pub-sub

Version:
132 lines (85 loc) 3.5 kB
[![Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/mdmuhtasimfuadfahim/rmq-pub-sub) ## rmq-pub-sub `rmq-pub-sub` is designed based on the [RabbitMQ](https://www.rabbitmq.com/) Pub-Sub functionality. A easier way to call a function named <strong>RMQPubStream</strong> to Produce any stream and consume by <strong>RMQSubStream</strong>. ## Table Of Contents - [Installation](#installation) - [Example](#example) - [How To Contribute](#how-to-contribute) - [Test](#test) - [Changelog](#changelog) - [Project Activity](#project-activity) - [License](#license) - [Contact](#contact) <h2 id="installation">Installation</h2> ``` $ npm i rmq-pub-sub ``` or ``` $ yarn add rmq-pub-sub ``` <h2 id="example">Example</h2> This example shows you how to create microservice and add pub-sub to communicate between services by `rmq-pub-sub`. #### Project Structure <img width="254" alt="project-structure" src="./image/projectStructure.png"> > Note: Create NodeJS environment in both service-1 and service-2 and create server using your favourite NodeJS framework. #### service-1/server.js ```js const RMQPubStream = require('rmq-pub-sub/RMQPubStream'); app.post('/send', async (req, res) => { const fakeData = { Name: "Md. Muhtasim Fuad Fahim", Email: "mdmuhtasim.fahim@gmail.com", }; const produce = await RMQPubStream("FAKE_DATA", fakeData); console.log("Producer: ", produce); return res.status(200).send("Done!"); }); ``` #### service-2/server.js ```js const RMQSubStream = require('rmq-pub-sub/RMQSubStream'); (async function rmqData() { await RMQSubStream("FAKE_DATA").then((data) => { console.log("CONSUME: ", data); }); })(); ``` #### service-1/.env & service-2/.env ```js AMQP_URL = "amqp://localhost" ``` #### Pull RabbitMQ docker image by the following command ```js docker run --name rabbitmq -p 5672:5672 rabbitmq ``` Now run the both services in your machine and hit the API: `http://localhost:${PORT}/send` 🥳 <h2 id="how-to-contribute">How To Contribute</h2> - Fork it 😎 - Create a feature branch: `git checkout -b my-feature` - Add your changes: `git add .` - Commit your changes: `git commit -m 'My new feature'` - Push to the branch: `git push origin my-feature` - Submit a pull request <p align="center"> <i>Contributions, issues and features requests are welcome!</i><br /> <i>📮 Submit PRs to help solve issues or add features</i><br /> <i>🐛 Find and report issues</i><br /> <i>🌟 Star the project</i><br /> </p> <h2 id="test">Test</h2> - Fork it 😎 - Clone forked repository: `git clone https://github.com/username/forked-name.git` - Install the dependencies from root directory: `npm install` - Rename `.env.example` to `.env` - Now run: `npm run test` or `npm run test:watch` or `npm run coverage` & see the results 🥳 <h2 id="changelog">Changelog</h2> See [CHANGELOG.md](CHANGELOG.md). <h2 id="project-activity">Project Activity</h2> ![Alt](https://repobeats.axiom.co/api/embed/04dedd11c223249d477a5ca5de837a6c6df53551.svg "Repobeats analytics image") <h2 id="license">License</h2> `rmq-pub-sub` is licensed by [MIT License](https://api.github.com/licenses/mit). <h2 id="contact">Contact</h2> Copyright © 2023 [Md. Muhtasim Fuad Fahim](https://github.com/mdmuhtasimfuadfahim) - Github: [@mdmuhtasimfuadfahim](https://github.com/mdmuhtasimfuadfahim) - LinkedIn: [@mdmuhtasimfuadfahim](https://www.linkedin.com/in/mdmuhtasimfuadfahim)