我有一个 Web 应用程序和一个处理来自 Redis 的消息的后台服务。但是,我不确定是否RedisMqServer
应该将 Web 应用程序配置为单例(我使用 Ninject 作为我的 IoC 容器)。出现的每个请求都需要将消息发送到后台服务(单向),但我不确定它是否应该按请求或每个应用程序实例化。
我在想容器会这样配置:
var clientManager = new PooledRedisClientManager();
var mqHost = new RedisMqHost(clientManager);
Bind<IMessageProducer>()
.ToMethod(_ => mqHost.MessageFactory.CreateMessageProducer())
.InRequestScope();
或者,RedisMqHost/RedisMqServer
当消息是单向的时,可能没有必要?因此,将配置简化为:
var clientManager = new PooledRedisClientManager();
Bind<IMessageProducer>()
.ToMethod(_ => new RedisMessageProducer(clientManager))
.InRequestScope();