2012-04-13 2 views
2

Я строю систему с использованием NSerivceBus, которая должна отправлять сообщения только удаленному обработчику в определенные временные рамки. До сих пор мне удалось разместить все сообщения в очереди обработки, а оттуда проверить наличие удаленного обработчика, и если обработчик недоступен, я не отправляю сообщения по границе. Для этого я используюОбработка сообщения NServiceBus

Bus.HandleCurrentMessageLater() 

но NSB будет продолжать попытки сразу после. Это не похоже на то, что другой слушатель будет запущен и запущен через несколько минут, но он может иметь часы отключения, поэтому это не совсем эффективно.

Удивительно, если есть способ, когда автобус повторит сообщение через некоторое время или не будет продолжать повторять попытку и ждать времени до следующей повторной попытки. Я использую Sagas, просто передачу сообщений команд/обработчиков.

ответ

5

Вы можете использовать Bus.Defer, чтобы вернуть сообщение после истечения определенного промежутка времени в версии 3.0.

+0

hello udi, я работаю с nservicebus 5.0 и 5.0. Метод bus.createinstance <> устарел, поэтому для синхронного вызова я использовал bus.createinstance в версии 4.6.5, но теперь я не могу выполнить миграцию мой код для более высокой версии, дайте мне знать, каков возможный способ отправки ответа на тот же запрос, вызов, который я хочу, должен быть синхронным. – Friyank

+0

Причина, по которой CreateInstance была устаревшей, была потому, что она не нужна - вы можете Bus.Reply (лямбда для создания сообщения). –