Я пытаюсь реализовать систему распределения задач с помощью RabbitMQ. Я начал с чего-то вроде кода из этой статьи: http://deontologician.tumblr.com/post/19741542377/using-pika-to-create-headers-exchanges-with - есть обмен заголовками, и несколько очередей потребителей привязаны к нему с разными значениями заголовка.Передача сообщений только один раз в заголовках заголовков RabbitMQ
Каждое сообщение (задача) имеет заголовок «env», который задает среду для запуска задачи. Возможно, в будущем может быть принято решение, основанное на большем количестве заголовков. Потребитель может предоставить более одного окружения, поэтому я связываю его очередь с заголовками обмена несколько раз с разными значениями заголовка.
Таким образом, я могу настроить, например, двух потребителей A a B. A обеспечивает среды «foo» и «bar», а B - только «bar». Теперь, когда задача, для которой требуется «бар» среды, поставляется как для A, так и для B, но я хочу, чтобы она переходила к одному из них (на самом деле это не важно).
Похоже, что когда публикуется сообщение, которое соответствует заголовкам нескольких потребителей, оно доставляется всем им. Тем не менее, мне нужно, чтобы каждое сообщение доставлялось точно одному потребителю с соответствующими заголовками. Есть ли способ достичь этого?
Можете ли вы показать пример того, как значения заголовка могут отличаться и как вам нужно сообщение, чтобы обратиться к разным потребителям? – kponz
@kponz Я немного расширил вопрос ... – Teyras
Возможно, вы захотите настроить очереди в соответствии с вашими средами, то есть создать очередь 'foo' и' bar', а затем привязать своих потребителей к очереди, в которых они заинтересованы (A привязывается к обоим, B только к 'bar') – kponz