Проверьте, что TopicClient будет работать без ошибок - PullRequest
0 голосов
/ 19 сентября 2018

Я пишу код C #, который отправит сообщение в Azure ServiceBus таким образом (упрощенно для ясности):

private ITopicClient topicClient
 = new TopicClient(configuration["ServiceBusEndpoint"], configuration["ServiceBusTopic"]);

// test here

await topicClient.SendAsync(messageToSend.ToString());

Что я хотел бы сделать, если это возможно, это провести какое-топроверить / проверить, что SendAsync() метод вероятен , чтобы иметь хорошие шансы на успех, прежде чем я его вызову, вместо того, чтобы перехватывать любые исключения во всех случаях, когда это не так.

То есть существует действующее открытое соединение с ServiceBus, и оно готово принять сообщение.

Я не могу найти никакой информации о том, как это сделать, из различных документов, которые я 'Читаю онлайн ...

Кто-нибудь еще сталкивался с такой ситуацией?Спасибо

1 Ответ

0 голосов
/ 19 сентября 2018

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

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

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

...