NServiceBus: обрабатывать сообщения по запросу - PullRequest
1 голос
/ 15 июня 2011

Я новичок в обслуживании автобусов (в частности, NServiceBus) и только что написал свою первую сагу.

Сага предназначена для получения транзакции, а затем отправки сообщений для проверки идентификатора пользователя, платежных данных, сведений о продукте и т. Д. В отношении в основном закрытой системы (сложно получить программный доступ). сейчас некоторые функции легко автоматизировать и написать обработчики, но есть несколько случаев, когда для завершения транзакции требуется ручное вмешательство, поскольку для выполнения этих задач нет доступных API. Теперь у нас будет несколько человек-агентов, работающих против этого, поэтому проблема параллелизма является проблемой, и я подумал, почему бы не каждому пользователю получить следующее сообщение по требованию и использовать параллелизм, присущий MSMQ.

Мне не удалось найти какие-либо методы на IBus в nhibernate, чтобы можно было получить следующее доступное сообщение по требованию, так как кажется, что все основано на push. Итак, я создал прототип пользовательского интерфейса, который вручную извлекает сообщения из MSMQ с использованием стандартного API .NET System.Messaging.MessageQueue и позволяет пользователю взаимодействовать с ним, а затем отправляет возврат обратно в сагу, записывая ответ обратно через IBus. Метод Send ().

Мой главный вопрос по этому поводу: нарушает ли это основополагающие принципы NServiceBus? и если нет, то есть ли сделать это через API NServiceBus?

Также вы бы справились с параллелизмом через MSMQ или через приложение UI?

Приветствия

1 Ответ

3 голосов
/ 15 июня 2011

Все в NSB специально является однонаправленным для целого ряда причин .Чтобы уведомить своих клиентов о том, что им нужно что-то сделать, вы можете опросить модель представления, чтобы узнать, есть ли работа, которую необходимо выполнить в определенный промежуток времени.Saga будет отвечать за вставку / обновление правильных строк для пользовательского интерфейса.Как только пользовательский интерфейс завершен, вы можете использовать NSB для отправки () сообщения обратно в Saga.Если это веб-интерфейс, ознакомьтесь с примером AsyncPages в загрузке.

Другой способ сделать это - отправить сообщение клиенту, предполагая, что обмен сообщениями установлен вместе с клиентом.Вам нужно будет создать какой-то насос сообщений в фоновом режиме.Опять же, как только работа будет завершена, подойдет простой Send ().

...