HoHsi
@HoHsi

Нужно ли каждый раз передавать Options в RabbitMQ?

Добрый день!
Пользую библиотечку amqp для ноды. Так как вменяемого гайда для этой штуки нет, учился по PHP / Python версиям. Столкнулся с кардинальным непониманием инициализации очереди и решил написать над этим всем обертку:
# Reqyures
events          = require 'events'
amqp            = require 'amqp'

# Init
EventEmitter = events.EventEmitter

QUEUE_NAME = "test_q"
EXCHANGE_NAME = "test_e"

class AmqpConnection extends EventEmitter
    constructor: ->
        @connection = amqp.createConnection { 
            host: 'localhost'
            port: 5672
            login: 'test'
            password: '123456'
            vhost: '/'
        }

        # @queue = undefined

        @connection.on 'ready', =>
            @connection.exchange EXCHANGE_NAME,
                type:           'topic'
                autoDelete:     false
                durable:        true
                confirm:        true
                deliveryMode:   2
            , (@exchange)=>
                @connection.queue QUEUE_NAME,
                    type:           'topic'
                    autoDelete:     false
                    durable:        true
                    confirm:        true
                    deliveryMode:   2
                , (@queue)=>
                    @queue.bind @exchange, QUEUE_NAME, =>
                        @.emit 'ready', {
                            @connection
                            @exchange
                            @queue
                        }

        @connection.on 'error', (err)=>
            @.emit 'error', err

    sendMessage: (message, callback)->
        @exchange.publish QUEUE_NAME, message, {
            mandatory: true
            deliveryMode: 2
        }, (err)=>
            callback err, !err

    subscribe: (count, callback)->
        @queue.subscribe {
            ack: true 
            prefetchCount: count
        }, callback

ac = new AmqpConnection()
module.exports = ac


Собственно проблема в том, что я не совсем понимаю, зачем я каждый раз в exchange и queue, а также publish передаю одни и те же опции. Потестировав, кажется если передавать с различными опциями, то все ломается.

Как это все обернуть более пряморуко?
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы