小编Kal*_*din的帖子

使用Swagger的特定状态代码的响应模型

我使用Swagger来记录我的REST API(使用asp.net web api 2).对于给定的api调用,是否有一种方法可以为每个可能的响应提供响应模型?我正在使用xml注释来注释状态代码响应,如下所示:

    /// <summary>
    /// Save a person
    /// </summary>
    /// <response code="200">Ok</response>
    /// <response code="400">Bad Request</response>
    /// <response code="500">Internal Server error</response>
    public HttpResponseMessage SavePerson() {...}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c# rest asp.net-web-api swagger

17
推荐指数
3
解决办法
2万
查看次数

RabbitMQ:在pub/sub中是消费者轮询队列中的新消息还是服务器推送消息?

我似乎无法在任何地方找到这些信息,或者我可能不理解它.在RabbitMQ的发布/订阅模式中,当生产者生成消息时,消费者如何知道队列中有新消息?

消费者是否经常轮询队列以检查是否有新消息或交换"推送"通知消费者是否有新消息?

c# queue message-queue rabbitmq

6
推荐指数
1
解决办法
2747
查看次数

StackExchange.Redis 异步调用比同步调用慢

我知道异步方法的目的不是提高性能,但我发现 StackExchange.Redis 上的异步方法比同步方法花费的时间要长得多

public static async Task<bool> GetScoresFromSetAsync(int score, string name)
{
  string redisConnection = ConfigurationManager.AppSettings["RedisAccount"].ToString();
  ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(redisConnection);
  IDatabase _cache = connection.GetDatabase();

  List<string> scores = new List<string>();

  var resultAsync = await _cache.SortedSetRangeByScoreAsync(name, score, score);
  var result = _cache.SortedSetRangeByScore(name score, score);
  return true;
}
Run Code Online (Sandbox Code Playgroud)

异步调用平均耗时约 5000 毫秒,而非异步调用平均耗时约 30 毫秒。我的 redis 托管在 azure 上。有什么想法吗?

编辑:我在这里谈论的是一个请求。SortedSetRangeByScore api 调用将在 30 毫秒内返回,而 SortedSetRangeByScoreAsync api 调用将在 5000 毫秒内返回。

c# async-await stackexchange.redis

5
推荐指数
1
解决办法
9581
查看次数

Stackexchange.Redis 超时和套接字故障

我使用 Azure Redis(使用 Stackexchange.Redis)作为缓存存储并且它通常工作正常。但是我不时收到超时错误,我无法确定为什么会发生这种情况。

我的 redis 连接设置:

value="dev.redis.cache.windows.net,ssl=true,password=secret,abortConnect=false,syncTimeout=3000"
Run Code Online (Sandbox Code Playgroud)

我在同一秒内收到所有这些异常(多次调用):[我也在 GET 操作中得到这些异常。几乎所有这些异常都在 StringSet 和 StringGet 上。我很少在 HashSets 或 HashGets 上遇到异常]

Timeout performing SET {key}, inst: 1, mgr: ExecuteSelect, queue: 6, qu=0, qs=6, qc=0, wr=0/0, in=0/0
SocketFailure on SET
SocketFailure on SET
No connection is available to service this operation: SET 
Run Code Online (Sandbox Code Playgroud)

我猜测设置对象的时间比预期的要长,这可能是由于对象很大,所以我可能会增加同步超时,但这会隐藏一些其他问题吗?

我只在对 stackexchange.redis 的同步调用中得到这些异常,当调用是异步的时我没有看到异常。

堆栈跟踪:

StackExchange.Redis.RedisConnectionException: SocketFailure on SET
   at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) i
   at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) 
   at StackExchange.Redis.RedisDatabase.StringSet(RedisKey key, RedisValue value, Nullable`1 expiry, …
Run Code Online (Sandbox Code Playgroud)

c# azure redis stackexchange.redis azure-redis-cache

3
推荐指数
1
解决办法
1万
查看次数