|
2 | 2 | debug = require('debug')('msgflo:amqp') |
3 | 3 | async = require 'async' |
4 | 4 | interfaces = require './interfaces' |
| 5 | +uuid = require 'uuid' |
5 | 6 |
|
6 | 7 | try |
7 | 8 | amqp = require 'amqplib/callback_api' |
@@ -144,10 +145,12 @@ class Client extends interfaces.MessagingClient |
144 | 145 | protocol: 'discovery' |
145 | 146 | command: 'participant' |
146 | 147 | payload: part |
147 | | - @channel.assertQueue 'fbp' |
148 | | - data = new Buffer JSON.stringify msg |
149 | | - @channel.sendToQueue 'fbp', data |
150 | | - return callback null |
| 148 | + exchangeName = 'fbp' |
| 149 | + @channel.assertExchange exchangeName, 'fanout', {}, (err) => |
| 150 | + return callback err if err |
| 151 | + data = new Buffer JSON.stringify msg |
| 152 | + @channel.publish exchangeName, '', data |
| 153 | + return callback null |
151 | 154 |
|
152 | 155 | class MessageBroker extends Client |
153 | 156 | constructor: (address, options) -> |
@@ -221,9 +224,17 @@ class MessageBroker extends Client |
221 | 224 | data: data |
222 | 225 | return handler out |
223 | 226 |
|
224 | | - @channel.assertQueue 'fbp' |
225 | | - @channel.consume 'fbp', deserialize |
226 | | - return callback null |
| 227 | + exchangeName = 'fbp' |
| 228 | + @channel.assertExchange exchangeName, 'fanout', {}, (err) => |
| 229 | + return callback err if err |
| 230 | + subscribeQueue = '.fbp-subscribe-' + uuid.v4() |
| 231 | + @channel.assertQueue subscribeQueue, { persistent: false }, (err) => |
| 232 | + return callback err if err |
| 233 | + @channel.bindQueue subscribeQueue, exchangeName, '', {}, (err) => |
| 234 | + return callback err if err |
| 235 | + @channel.consume subscribeQueue, deserialize |
| 236 | + debug 'subscribed to', subscribeQueue, exchangeName |
| 237 | + return callback null |
227 | 238 |
|
228 | 239 | exports.Client = Client |
229 | 240 | exports.MessageBroker = MessageBroker |
0 commit comments