Service Stack サービスでサービス操作を呼び出すために Redis を使用したいと考えています。
メッセージ要求として単純な 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();
})
);