Skip to content

Commit badc608

Browse files
authored
Merge pull request #9 from parse-server-modules/feature/disable-fan-out
Add option for disabling fan out
2 parents f98a0f7 + 5945162 commit badc608

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

lib/index.js

+21-14
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ class Publisher {
3939

4040
class Subscriber extends events.EventEmitter {
4141

42-
constructor() {
42+
constructor(options) {
4343
super();
44+
this.disableFanOut = options.disableFanOut || false;
4445
}
4546

4647
subscribe(channel) {
@@ -72,27 +73,32 @@ class Subscriber extends events.EventEmitter {
7273
}
7374

7475
_createSubscription(topic, channel) {
75-
76-
const subscriptionUUID = uuid.v1();
77-
var subscriptionName = `${namePrefix}-${channel}-${subscriptionUUID}`;
76+
let subscriptionName;
77+
if (!this.disableFanOut) {
78+
const subscriptionUUID = uuid.v1();
79+
subscriptionName = `${namePrefix}-${channel}-${subscriptionUUID}`;
80+
} else {
81+
subscriptionName = `${namePrefix}-${channel}`;
82+
}
7883

7984
topic.subscribe(subscriptionName, (err, subscription) => {
80-
8185
if (err) {
8286
console.error(`Failed to create subscription ${err}`);
8387
return;
8488
}
8589

8690
console.log(`Subscription ${subscription.name} created.`);
8791

88-
function deleteSubscription() {
92+
const deleteSubscription = () => {
8993
removeListeners();
90-
console.log('Subscriber: Signal received, deleting subscription');
91-
subscription.delete().then(() => {
92-
console.log('Subscriber: subscription deleted...');
93-
}, (err) => {
94-
console.error(`Subscriber: Error deleting subscription`, err);
95-
});
94+
if (!this.disableFanOut) {
95+
console.log('Subscriber: Signal received, deleting subscription');
96+
subscription.delete().then(() => {
97+
console.log('Subscriber: subscription deleted...');
98+
}, (err) => {
99+
console.error(`Subscriber: Error deleting subscription`, err);
100+
});
101+
}
96102
}
97103

98104
function messageHandler(message) {
@@ -121,6 +127,7 @@ class Subscriber extends events.EventEmitter {
121127
function removeListeners() {
122128
subscription.removeListener('message', onMessage);
123129
subscription.removeListener('error', onError);
130+
124131
process.removeListener('SIGTERM', deleteSubscription);
125132
process.removeListener('SIGINT', deleteSubscription);
126133
}
@@ -140,8 +147,8 @@ function createPublisher() {
140147
return new Publisher(emitter);
141148
}
142149

143-
function createSubscriber() {
144-
return new Subscriber();
150+
function createSubscriber(options) {
151+
return new Subscriber(options);
145152
}
146153

147154
module.exports = {

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parse-server-gcloud-pubsub",
3-
"version": "2.0.1",
3+
"version": "2.1.0",
44
"description": "google cloud pub/sub adapter for parse-server",
55
"main": "lib/index.js",
66
"engines": {

0 commit comments

Comments
 (0)