2011-02-06 2 views
2

Я получаю сообщения от MSMQ в транзакции. Если приложение не может обработать их по какой-либо причине, оно прерывает транзакцию.Как я могу получить AbortCount сообщения MSMQ?

После того как транзакция отменена, сообщение возвращается в очередь. Если сообщение снова получено, есть ли способ узнать, было ли сообщение ранее прервано?

Через MMC (интерфейс MSMQ) вы можете просмотреть свойства сообщения, чтобы узнать, сколько раз сообщение было прервано.

Есть ли способ получить это значение программно?

ответ

1

С сайта MSDN:

, чтобы следить за количеством раз в сообщение Попытка прочитать, Windows Vista, поддерживает прочное сообщение свойство, которое подсчитывает количество прерывает и подсчета ходов свойство, которое подсчитывает количество сообщений между очередью приложений и подклассами. Канал WCF использует , чтобы вычислить счетчик приема и количество циклов повторных попыток. В Windows Server 2003 и Windows XP, счетчик прерываний поддерживается в памяти по каналу WCF и сбрасывается , если приложение не работает. Также, канал WCF может удерживать число прерываний для до 256 сообщений в памяти по в любое время. Если считывается 257-ое сообщение, , то сбрасывается счетчик прерванных сообщений .

Сводные данные об отмене и перемещении доступны для операции обслуживания через рабочий режим . Следующий код пример показывает, как получить к ним доступ.

Страница с примерами here.

+0

Это получается через WCF. Есть ли способ получить AbortCount, когда не используется WCF? – legion

+0

Не то, чтобы я знал. Обычная мудрость, когда не используется WCF, заключается в том, чтобы увеличить пользовательское поле с номером прерывания в сообщении и переустановить его. Если вы просто откатите его назад, вы не сможете его изменить. Однако вы можете поместить обновленное сообщение и исходное сообщение в одну и ту же единицу работы, чтобы вы не рискуете потерять сообщения. –

Смежные вопросы