2012-09-28 2 views
1

Документация приводит к тому, что BeginAcceptMessageSession() выдает TimeoutException, если превышено время, указанное в параметре serverWaitTime. Это не всегда происходит.Azure Service Bus - SuscriptionClient.BeginAcceptMessageSession() и TimeoutException

Таким образом, это поведение этой вещи так, что она не должна возвращать MessageSession, если в теме нет сообщений (т. Е. Она ждет определенный период времени и, не найдя сообщений, выбрасывает TimeoutException)? Или, вернее, делает ли это только тайм-аут, если он не может ответить в течение периода времени, независимо от того, есть ли там сообщения?

Я веду ОЧЕНЬ простое тестирование на пустой теме и пустой подписке. Используя 5-секундное значение таймаута, иногда оно выбрасывает TimeoutException, а иногда нет.

Что дает? Почему это не соответствует? Каково правило, когда исключение TimeoutException будет или не будет выбрано? Могу ли я получить MessageSession на пустой подписке?

Эти документы являются абсолютно разреженными.

Благодарим за любую помощь, которую вы можете предоставить.

ответ

1

Да, недокументирование довольно впечатляет.

Вы Close() в MessageSession в том случае, если вы его получили?

Помните, что возвращенный объект представляет собой токен, который предоставляет вам эксклюзивные права на удаление из темы, пока вы ее не вернете, или кто-то другой ее «победит».