У меня есть небольшая проблема с дистрибьютором NServiceBus и этим, вероятно, мое собственное незнание, но это - то, что происходит -
Я имею -
a. 2 Рабочих (Сервер) процессы, работающие на 2 машинах
сообщения добавляющего процесса дистрибьютора b. 1 рабочим
сообщения добавляющего клиентского процесса c. 1 к дистрибьютору
Теперь все это работает хорошо, когда все серверы в порядке.
Скажите, я теперь закрыл Рабочий процесс № 1, таким образом, что только Рабочий процесс № 2 работает. Я теперь ожидаю в течение некоторого времени и затем начинаю добавлять сообщения к дистрибьютору, что я замечаю, то, что неизменно некоторые сообщения заканчивают тем, что были поставлены в очередь к рабочему процессу № 1 (процесс, который был закрыт).
Теперь я предполагаю, что это происходит, потому что прежде, чем закрыть сервер указало к дистрибьютору, что это было готово, и дистрибьютор отвечал на эти управляющие сообщения.
Мой вопрос, это - там способ корректно закрыть рабочего, подключенного к дистрибьютору, сообщающему ему, что больше сообщений не должно быть поставлено в очередь к нему.
Спасибо.
Вы можете постепенно уменьшать количество рабочих потоков рабочего узла, посылая ему сообщения ChangeNumberOfWorkerThread. Существует инструмент управления в каталоге grid (я думаю), который вы можете использовать, просто нужно ввести очередь дистрибьютора и каждую из рабочих очередей.