我一直在寻找使用Redis Pub/Sub作为RabbitMQ的替代品.
根据我的理解,Redis的pub/sub与每个订阅者保持持久连接,如果连接终止,所有将来的消息都将丢失并丢弃在地板上.
一种可能的解决方案是使用列表(和阻塞等待)将所有消息和pub/sub存储为通知机制.我认为这让我大部分都在那里,但我仍然对失败案件有一些担忧.
我有一个MonoTouch应用程序,它使用ThreadPool来管理后台线程的数量.如果我让ThreadPool从一个线程产生并在线程内,它会触发一个异步Web请求,Web请求会产生第二个线程吗?如果是这样,该线程将从ThreadPool中删除吗?
这种事情的最佳做法是什么?Web请求是否应该是同步调用,以降低当前的线程数?
ThreadPool.QueueUserWorkItem(callback =>
{
WebClient client = new WebClient();
client.DownloadStringAsync(new Uri("http://www.google.com/"));
client.DownloadStringCompleted += (a,b) => Console.WriteLine("Done");
});
Run Code Online (Sandbox Code Playgroud)