| 
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