Я ищу способ для потребителя взять полученное сообщение из очереди, вызвать метод для него, а затем проверить, выполнена ли задача и не перезаписывать ли ее. проверка проста, я проверяю свойство int внутри сообщения, у меня возникают проблемы с ним, потому что оно запускает событие, и вы не можете использовать его внутри события, поэтому вы не можете проверить его внутри ... Есть идеи?
код:
EventingBasicConsumer consumer = new EventingBasicConsumer(_channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var msg = Encoding.UTF8.GetString(body);
var message = JsonConvert.DeserializeObject<MessageWithoutUser>(msg);
IBot bot = _factory.GetBot(message);
var result = bot.Execute(message.MessageId, message.UserId, message.Likes, message.Service, message.Time);
if (CheckResult(result))
{
_channel.BasicConsume(queue: "messages",
autoAck: true,
consumer: consumer);
}
else
{
var newJsonMessage = new MessageWithoutUser { MessageId = message.MessageId, UserId = message.UserId, Likes = result, Service = message.Service, Time = message.Time };
var newJson = JsonConvert.SerializeObject(newJsonMessage);
Encoding.UTF8.GetBytes(newJson);
ea.Body = SerializeMessage(newJsonMessage);
_channel.BasicReject(ea.DeliveryTag,true);
}
Console.ReadLine();
};
, как вы можете видеть, есть событие .BasicConsume внутри события Received, что невозможно, и именно это я и хочу сделать, взять результат, затем проверить, если его 1 или 0, то на основе этого потреблять или отклонять.