https://github.com/devisjs/devis-pub_sub-redis
A pubsub message transport plugin over Redis pubsub for Devis
https://github.com/devisjs/devis-pub_sub-redis
Last synced: 6 months ago
JSON representation
A pubsub message transport plugin over Redis pubsub for Devis
- Host: GitHub
- URL: https://github.com/devisjs/devis-pub_sub-redis
- Owner: Devisjs
- License: mit
- Created: 2017-11-12T20:06:37.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-11-14T22:35:36.000Z (over 8 years ago)
- Last Synced: 2025-06-27T23:46:22.504Z (9 months ago)
- Language: JavaScript
- Homepage:
- Size: 24.4 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Devis Pub/Sub redis

>A Devis plugin for message transport over Redis pub/sub
# Pub/Sub transport
## Problems
* App send messages to the applications that are interested in receiving the message without knowing the identities of the receivers
* Tight coupling of sender and receiver
## Solution
* Extend the communcation infrastructure by including a topic for each message
* Enable listening apps to receive messages from only specified topics
* create a mecanism that sends messages to all interested receivers
This plugin solves this problem by using redis.
## Actors in Pub/Sub
* Publisher : Sender apps that tag each message with the name of a topic.
* Sibscriber : Receiver apps that choose which topic to receive messages from.
* Pub/Sub server : This plugin
## Install
We should install Devis and the plugin :
```bash
$ npm install --save devis
$ npm install --save devis-pub_sub-redis
```
## Example
### Quick Example
```javascript
const devis = require("devis")
.plug("devis-pub_sub-redis")
//Create a subscriber
.call({ role: "pub", action: "create" }, { pub: "pub1" }, (err, res) => {
console.log(res);
});
setTimeout(() => {
devis.call({ transport: "pub/sub", action: "pubslish" }, { pub: "pub1", topic: "test", message: "new message" }, (err, res) => {
console.log(res);
});
}, 3000);
//Create a subscriber
devis.call({ role: "sub", action: "create" },{sub:"sub1"},(err,res)=>{
console.log(res);
});
devis.call({ transport: "pub/sub", action: "subscribe" },{sub:"sub1",topic:"test"},(err,res)=>{
console.log(res);
});
devis.listen({
type: 'http',
port: '8888',
host: '127.0.0.1',
protocol: 'http'
});
```
### Full example
you can see a full example in example folder