Различают таймаут и случаи отсутствия данных

1

В настоящее время в моем проекте я столкнулся с проблемой, что нет разницы между двумя ситуациями при запросе данных:

  1. Если на db нет данных (для запрошенных параметров)
  2. Когда происходит таймаут (или, например, когда VPN-соединение потеряно)

В обоих случаях метод:

object Get(string key)
    Member of Enyim.Caching.IMemcachedClient

возвращает просто null. Я хотел бы получить исключение или что-то во втором случае, чтобы отличить эти два случая.

Для SocketPool receiveTimeout устанавливается в {00:00:01}, но даже будучи истекли исключение не выдается, как я ожидал. Не могли бы вы посоветовать?

Теги:
nosql
couchbase

1 ответ

1
Лучший ответ

Существует два интерфейса, которые MemcachedClient реализует: IMemcachedClient и IMemcachedResultsClient. Каждый базовый метод на IMemcachedClient имеет эквивалентный метод ExecuteXXX на другом интерфейсе, который возвращает более подробные результаты.

Ты можешь сделать:

var result = client.ExecuteGet<MyType>(key);

результатом будет IGetOperationResult который вы можете запросить для разных кодов состояния или получить сообщение для журналов или что-то еще.

По причинам, которые вы указываете, я предпочитаю всегда использовать ExecuteXXX() более простых ExecuteXXX() XXX(), хотя для их использования может быть немного больше кода.

  • 0
    Спасибо, что ответили! Я должен добавить, что я не нашел эти методы, пока не обновил CouchBase.dll до версии 1.1 или новее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню