У меня есть следующая теоретическая проблема.Как создать «отличную» очередь в Azure?
Я хотел бы иметь возможность создавать несколько экземпляров каждой роли в приложении Azure. По крайней мере, 2, чтобы убедиться, что он работает 24/7 (или почти 24/7).
Это легко для клиентских интерфейсов и ролей, которые прослушивают данные.
Это также легко для рабочих ролей, которые обрабатывают данные и сохраняют результаты в blobs/table-storage при условии, что каждая рабочая роль обрабатывает собственный набор данных для создания одного результата.
Но у меня возникла проблема с «средой» этого приложения.
В простейшем случае, если бы я мог создать «отдельную» очередь в Azure, то это было бы легко. Но, насколько я знаю, это невозможно сделать, тем более что вы можете загружать только 32 сообщения за раз.
Итак, мне нужна роль контроллера. Думаю. Эта роль обеспечит, чтобы рабочие роли не мешали друг другу.
НО, это означает, что роль контроллера не может иметь более одного экземпляра!
Как мне подойти к этой проблеме?
EDIT:
Я вижу, что, возможно, дал слишком мало информации о моей проблеме.
Я знаю, как работают лазурные очереди; Я знаю, что после того, как сообщение будет отменено, оно не будет доступно для других ролей в течение определенного периода времени или до его удаления.
Дело в том, что я не могу просто заполнить очередь случайными уникальными данными, такими как GUID.
Вот более подробное объяснение проблемы.
- Роли прослушивания прослушивают данные клиента и помещают эти данные в базовую таблицу, а затем уведомляют через очередь, что определенная часть этой таблицы была изменена.
- Роли слушателя могут сообщать, что одна и та же часть таблицы была изменена несколько раз - они не отслеживают, что происходит с очередью, и что уже в ней, поэтому они просто отправляют сообщения по строкам «эй» , Я изменил этот бит для этого клиента »(например).
- Рабочие создают или обновляют определенные файлы (в основном капли) на основе сообщений, предоставляемых слушателями. В настоящее время есть один рабочий, который загружает всю очередь, проверяет отдельные сообщения и затем обновляет все файлы по мере необходимости. Добавление второго работника вызывает проблемы: поскольку очередь обычно НЕ содержит отдельных значений, два рабочих могут начать работать над одним и тем же выходным файлом и прервать друг друга.
Таким образом, я ищу отдельную очередь или, по крайней мере, предоставляет возможность проверить, не было ли в ней помещено определенное сообщение.
Если служебная шина - единственный способ пойти, то пусть будет так, но было бы неплохо сделать решение максимально простым.;)
Не совсем уверен, что вы просите. Можете ли вы немного разобраться? Почему вы не можете добавлять отдельные сообщения в очередь? Как предел чтения 32 сообщений, связанных с отдельными сообщениями? Как рабочие роли мешают друг другу без роли контроллера? –