#java #rabbitmq
В мою систему отправляется больше количество сообщений из разных систем. Допустим, сообщения для автомобилей разных марок. При каждой отправке новой марки автомобилей из какой-либо системы создается новая очередь (например, auto.kia, auto.lada и т.п.) в итоге в реббите может быть произвольное количество очередей. Но, у меня есть один воркер (Consumer), который должен собирать и обрабатывать сообщения из всех этих очередей. Как реализовать множества очередей одним воркером?
Ответы
Ответ 1
Звучит как классический случай topic exchange. В них требуется, чтобы routing_key в сообщениях отправителя (producer) состоял из набора слов, разделённых точками, ваши auto.lada и auto.kia как раз подходят. Тогда binding_key принимающего (consumer), содержащий спецсимволы * и # играет роль шаблона вроде регулярного выражения: * означает "одно любое слово" # означает "любое число (даже 0) любых слов". ...и ключи auto.lada и auto.kia оба подойдут под шаблон auto.* у принимающего. Переменной при таком раскладе будет не очередь, а ключ сообщений (routing key для отправителя). Распределение происходит в рамках одной очереди. Много очередей для этой цели вам и не нужно. Подробнее в руководстве по AMQP.
Комментариев нет:
Отправить комментарий