Полное раскрытие: я новичок в разработке Service Fabric. Вот моя ситуация. У нас есть кластер Service Fabric. Мы развернули там сервис с отслеживанием состояния. Служба назначила очередь служебной шины, которую она прослушивает. Таким образом, все экземпляры служб на всех узлах кластера прослушивают одну и ту же очередь служебной шины. Каждый экземпляр службы регистрирует обратный вызов OnMessage в очереди служебной шины для обработки следующего сообщения:
QueueClient Queue = QueueClient.CreateFromConnectionString(
GetServicebusConnectionString(),
ConfigData.SERVICE_QUEUE_NAME);
if (Queue != null)
{
var options = new OnMessageOptions();
options.AutoComplete = false;
Queue.OnMessage((receivedMessage) =>
ProcessMessage(receivedMessage), options);
}
Теперь, согласно сообщениям в журнале, похоже, что все экземпляры службы забирают сообщение, которое было помещено в очередь одновременно. Что не является хорошей вещью. Вопрос такой:
Можно ли использовать очередь служебной шины таким образом, чтобы каждое сообщение из очереди принималось только одним экземпляром службы?