0

假设为了争论,我有 3 个 Web 服务主机正在运行,其中只有一个注册了任何处理程序(我认为这等同于订阅频道/主题),例如

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 回答