Когда использовать MessageQueueTransaction для простых случаев? - PullRequest
2 голосов
/ 22 октября 2010

Я новичок в MSMQ и пытаюсь понять, когда использовать класс MessageQueueTransaction.Например, есть ли какое-либо значение для создания простой транзакции просто для помещения сообщения в очередь MSMQ, подобного этому?

  using (MessageQueueTransaction t = new MessageQueueTransaction())
  {
     t.Begin();
     Message m = new Message(myString, formatter);
     queue.Send(m, t);
     t.Commit();
  }

Я не могу придумать ни одного, и я испытываю желание уменьшить этот код до ....

     Message m = new Message(myString, formatter);
     queue.Send(m, t);

Я что-то теряю?Есть ли шанс, что это закончится в частично отправленном поврежденном состоянии?

-MSMQnfused

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

Это нормально, так как у вас есть только один шаг

1 голос
/ 06 апреля 2011

Поскольку вы отправляете по одному сообщению за раз, вам не нужно беспокоиться о сохранении порядка сообщений или чего-то подобного, поэтому ваш код в порядке.Вы все еще можете использовать транзакцию на стороне Receive(), чтобы сообщение возвращалось в очередь в случае возникновения исключения.

Но MSMQ также позволяет вам кратко выразить, что в этом сообщении содержится только одно сообщение.транзакция:

queue.Send(m, MessageQueueTransactionType.Single);
...