В настоящее время я работаю над сервисом вдов, который получает сообщения от местного частного MSMQ. Очередь является транзакционной.
Прием осуществляется следующим образом:
public void ReceiveAndSaveData(MessageQueue queue, MsmqDbContext context)
{
var message = new Message();
try
{
using (var tx = new MessageQueueTransaction())
{
tx.Begin();
message = queue.Receive(tx);
var bodyReader = new StreamReader(message.BodyStream);
var jsonBody = bodyReader.ReadToEnd();
var messageData = JsonConvert.DeserializeObject<QueueMessage>(jsonBody);
/*THERE IS SOME DATA PROCESSING*/
tx.Commit();
}
}
catch (JsonSerializationException e)
{
Logger.WriteError(new LogDetail("Error occured during deserializing incoming data.", e, message.Id));
}
catch (Exception e)
{
Logger.WriteError(new LogDetail("Error occured during saving data to database", e, message.Id));
}
}
В случае JsonSerializationException я хочу удалить это сообщение из текущей очереди. Кто-нибудь знает, как решить эту проблему?