0

議論のために、私は3つのWebサービスホストを実行しており、そのうちの1つだけがハンドラーを登録しているとしましょう(これは、チャネル/トピックへのサブスクライブに相当すると思います)。

var mqService = new RedisMqServer(container.Resolve<IRedisClientsManager>())
{
    DisablePriorityQueues = true
};
container.Register<IMessageService>(mqService);
container.Register(mqService.MessageFactory);

mqService.RegisterHandler<OutboundInitiateCallInfo>(ServiceController.ExecuteMessage);
mqService.RegisterHandler<DirectMailAssignmentInfo>(ServiceController.ExecuteMessage);

mqService.Start();

ここで私の質問は、「公開のみの場合、他のアプリ ホストを同じ方法で構築する必要がありますか?」です。例えば

var mqService = new RedisMqServer(container.Resolve<IRedisClientsManager>())
{
    DisablePriorityQueues = true
};
container.Register<IMessageService>(mqService);
container.Register(mqService.MessageFactory);

mqService.Start(); <=== Do I need to start the service, or is the MessageFactory registration enough?

ありがとう、スティーブン

4

1 に答える 1

2

パブリッシャーの最小コードは次のとおりです。

var redisManager = container.Resolve<IRedisClientsManager>();

using (var mqProducer = new RedisMessageProducer(redisManager))
{
    mqProducer.Publish(new Msg { ... });
}

MessageFactory を使用することもできます。

var msgFactory = new RedisMessageFactory(redisMangager);

using (var mqClient = msgFactory.CreateMessageQueueClient())
{
    mqClient.Publish(new Msg { ... });
}
于 2015-06-07T01:19:49.460 に答える