#c# #azure-storage-queues #asp.net5
Вопрос:
У меня есть очередь, в которую поступают сообщения с нескольких устройств. Я хочу обрабатывать сообщения, принадлежащие разным устройствам, параллельно, но сообщения для конкретного устройства должны обрабатываться последовательно.
Пример: Допустим, у меня есть 3 устройства: A, B и C, и все они отправляют сообщения в одну и ту же очередь. На другой стороне очереди у меня есть какой-то рабочий процесс, который читает сообщения и должен выполнить некоторую работу на их основе.
Queue
Message A1
Message B1
Message A2
Message C1
Message B2
Message A3
Message B3
Message C2
Message C3
Рабочий процесс может обрабатывать сообщения от A, B и C параллельно, но порядок сообщений для конкретных устройств должен обрабатываться последовательно: после A1 можно выбрать A2, а затем A3.
У меня он уже работает с каждым сообщением, обрабатываемым последовательно, но это плохо работает, когда есть много устройств, отправляющих сообщения.
Есть какие-нибудь идеи о том, как я могу этого достичь?
Комментарии:
1. Создать очередь для каждого устройства?
2. Возможно, вам может понадобиться что-то вроде служебной шины вместо очередей хранения. Служебная шина работает быстрее, работает по подписке вместо опроса, и я думаю, что разделы помогли бы в этом сценарии.
3. Просто для обновления, я думаю, что сеансы в служебной шине-это то, что вам нужно. docs.microsoft.com/en-us/azure/service-bus-messaging/… для группировки связанных сообщений, чтобы у вас был 1 работник на сеанс, сохраняющий FIFO