Там нет ничего из коробки. Вам придется строить свои собственные. Взгляните на ServiceStack.Redis.Messaging.RedisMqHost
- большинство из того, что вам нужно, есть, и это, вероятно, проще (один поток делает все), чтобы вы шли по сравнению с ServiceStack.Redis.Messaging.RedisMqServer
(один поток для прослушивания в очереди, по одному для каждого рабочего). Я предлагаю вам взять этот класс и адаптировать его к вашим потребностям.
Несколько указателей:
ServiceStack.Message.InMemoryMessageQueueClient
не реализует WaitForNotifyOnAny()
так что вам потребуется альтернативный способ получения фонового потока ждать входящих сообщений.
- Сложная связь, реализация ServiceStack.Redis использует подписки на темы, которые в этом классе используются для переноса
WorkerStatus.StopCommand
, что означает, что вам нужно найти альтернативный способ остановить фоновый поток.
- Наконец, вы можете адаптировать
ServiceStack.Redis.Messaging.RedisMessageProducer
, поскольку его метод Publish()
выталкивает запрошенное сообщение в очередь и толкает имя канала/очереди в очередь TopicIn. После прочтения кода вы можете увидеть, как три точки связаны друг с другом.
Надеется, что это помогает ...
Что сообщениям Provider вы используете? MSMQ. – Shashi
InMemoryTransientMessageService в ServiceStack, это простая очередь в памяти. Таким образом, цель очереди - позволить абоненту подождать как можно меньше, а не гарантировать, что сообщение будет гарантировано на 100%. Если бы я этого хотел, я мог бы использовать Redis: https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-redis – mattias