嵌套IMessageQueueClient使用Servicestack InMemoryTransientMessageService发布

时间:2013-10-31 13:02:46

标签: servicestack messaging publish-subscribe

我们正在使用InMemoryTransientMessageService来链接服务之间的多个单向通知。我们不能使用Redis提供商,到目前为止我们并不需要它。同步调度就足够了。

在处理另一个发布的服务中使用发布时,我们正在尝试解决问题。在伪代码中:

FirstService.Method()     _messageQueueClient.Publish(OBJ);

SecondService.Any(OBJ)     _messageQueueClient.Publish(OBJ);

ThirdService.Any(OBJ)

永远不会处理SecondMessage。在下面的ServiceStack TransientMessageServiceBase代码中,当处理第二条消息时,服务“isRunning”,因此它不会尝试处理第二条消息:

public virtual void Start()
    {
        if (isRunning) return;
        isRunning = true;

        this.messageHandlers = this.handlerMap.Values.ToList().ConvertAll(
            x => x.CreateMessageHandler()).ToArray();

        using (var mqClient = MessageFactory.CreateMessageQueueClient())
        {
            foreach (var handler in messageHandlers)
            {
                handler.Process(mqClient);
            }
        }

        this.Stop();
    }

我不确定更改此行为的影响,以便能够嵌套/链接邮件发布。你认为删除这张支票是否安全?其他一些想法?

1 个答案:

答案 0 :(得分:1)

经过一些测试后,似乎没有问题去除" isRunning"控制。所有嵌套的出版物都可以正确执行。