Я хочу создать очередь приоритетов, которая имеет внутреннюю приоритизацию, чтобы сначала назначать более приоритетные сообщения, используя ServiceStack. Реализация ServiceStack RedisMQ обеспечивает Приоритет setter типа long на своем Интерфейс пользователя. Я ожидал бы, что сообщение, отправленное с более высоким значением в Приоритет, будет выведен первым из очереди. Мои тесты показывают, что сообщение с Приоритет> 0 ставится на Redis «Mq: MyDto.priorityq», а любое другое значение помещает сообщение в нормальное состояние в очереди «Mq: MyDto.inq».Внутренняя приоритизация служебных программ в RedisMQ PriorityQueue
Это пример кода, иллюстрирующий то, что я пытаюсь выполнить:
using (var producer = MsgFactory.CreateMessageProducer())
{
var lowPrioMsg = new Message<MyDto>(lowPrioDto);
lowPrioMsg = (long)1;
producer.Publish<MyDto>(lowPrioMsg);
var highPrioMsg = new Message<MyDto>(highPrioDto);
highPrioMsg.Priority = (long)100;
producer.Publish<MyDto>(highPrioMsg);
}
Другими словами, я хочу highPrioMsg с Priority = 100 быть выскочил перед lowPrioMsg с Приоритет = 1. На практике, однако, это сообщение, похоже, следует за последовательным принципом FIFO.
Есть ли способ настроить ServiceStack RedisMQ на работу, как я ожидаю, с внутренней приоритезацией в PriorityQueue?
Или мой единственный выбор - либо использовать обычную очередь, либо приоритетную очередь? В этом случае почему длинный, используемый для Приоритет setter вместо логического?
Хорошо, хороший ответ. Благодаря! –