小编典典

如何使用Structuremap在自定义名称空间中将Redis设置为ServiceStack Web应用程序上的缓存和MQ

redis

我想设置我的应用程序以将Redis用作会话等的缓存以及运行我的消息队列。

我的应用程序是一个ASP.net MVC网站以及基于ServiceStack的Json服务提供商。最佳的配置方式是什么?

我希望能够将IMessageQueueClient传递到我的服务类和控制器中,以便可以将任务添加到队列中。

我在什么范围制造方面迷失了方向。我的代码如下:

//Redis Client Manager
var pooledClientManager = new PooledRedisClientManager(ConfigurationManager.AppSettings.Get("RedisServer"));
pooledClientManager.NamespacePrefix = "myApp-";
For<IRedisClientsManager>().Singleton().Use(x => pooledClientManager);

//Cache
For<ICacheClient>().Use(c => c.GetInstance<IRedisClientsManager>().GetCacheClient());

//MQ
MyApplication.MqService = new RedisMqServer(pooledClientManager);
For<IMessageQueueClient>().Singleton(). Use(
             x => MyApplication.MqService.CreateMessageQueueClient());
For<IMessageService>().Singleton().Use(x=>MyApplication.MqService);

然后,我稍后再调用MyApplication.MqService.RegisterHandler(etc等);

  1. 这可行,但是我不确信自己的范围设定正确。
  2. 命名空间前缀不起作用,我需要此功能。

感谢您的帮助!


阅读 368

收藏
2020-06-20

共1个答案

小编典典

NamespacePrefix是只对由所述保持RedisClients内部数据结构,并且不影响用户指定的密钥。

2020-06-20