我想使用 Redis 在我的 Service Stack 服务上调用服务操作。
我创建了一个简单的 DTO 作为消息请求,并根据演示页面注册消息服务:
var messageService = m_Container.Resolve<RedisMqServer>();
messageService.RegisterHandler<SubscribeAddressRequest>(x => ServiceController.ExecuteMessage(x) );
messageService.Start();
ServiceStack 实际上收到了这些消息,但我收到以下错误(来自我的容器):
No component for supporting the service ServiceStack.Messaging.IMessage was found.
这很奇怪,为什么 ServiceStack 要求将依赖项作为 IMessage 注入?我没有为 IMessage 注册任何提供者,所以我知道这会失败,但我没有看到任何提供者。我正在注册以下类型:
string[] RedisHosts = new string[] { (string)ConfigurationManager.AppSettings["RedisHost"] };
container.Register(
Component.For<IRedisClientsManager>().ImplementedBy<PooledRedisClientManager>().DependsOn(new { poolSize = 1000, poolTimeOutSeconds = 1, readWriteHosts = RedisHosts }),
Component.For<RedisMqServer>(),
Component.For<IMessageQueueClient>().UsingFactoryMethod((k, c) =>
{
return k.Resolve<RedisMqServer>().CreateMessageQueueClient();
})
);