Ключ маршрутизации не совпадает, но сообщение отправляется в очередь - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь заставить кролика отправлять круглые сообщения на разные темы.У меня есть 1 очередь с именем «конечная точка / 1». Я отправляю сообщения в «конечную точку / 1» и «конечную точку / 2».«конечная точка / 2» не существует, поэтому я ожидал, что эти сообщения исчезнут, но вместо этого они отправляются в очередь «конечная точка / 1», хотя к ней нет привязки!

Я понятия не имею, почему это такпроисходит, я делаю что-то не так?

enter image description here enter image description here

// declare exchange
ch.ExchangeDeclare("uop_fanout", "fanout", false, false, false, false, nil)

//send
ch.Publish("uop_fanout", topic, false, false, amqp.Publishing{Body: msg})

// listend
q, err := ch.QueueDeclare(topic, false, false, false, false, nil)
    if err != nil {
        return nil, err
    }
    err = ch.QueueBind(q.Name, topic, "uop_fanout", false, nil)
    if err != nil {
        return nil, err
    }
    messagesFanout, err := ch.Consume(q.Name, "", false, false, false, false, nil)
    if err != nil {
        return nil, err
    }

1 Ответ

0 голосов
/ 24 августа 2018

С этим утверждением:

ch.ExchangeDeclare("uop_fanout", "fanout", false, false, false, false, nil)

вы объявляете обмен типа fanout.Это означает, что сообщения, поступающие на обмен, клонируются и отправляются в все очереди, связанные с этим обменом.

Неясно, что вы имеете в виду под "сообщениями с циклическим изменением в разные темы".

Если вы хотите выполнить только циклическое распределение нагрузки, вы можете просто направить свои сообщения в одну очередь и иметь двух или более потребителей для этой очереди.

Если вы хотите распределять сообщения поВ теме вы можете использовать обмен direct с определенными ключами маршрутизации.Прибывающее сообщение будет отправлено в очередь, связанную с соответствующим ключом маршрутизации.

Конечно, вы можете объединить эти понятия.

Источник: https://www.rabbitmq.com/tutorials/amqp-concepts.html

...