1

我们正在使用 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();
    }

我不确定更改此行为以便能够嵌套/链接消息发布的影响。您认为删除此检查是否安全?其他一些想法?

4

1 回答 1

1

经过一些测试,删除“isRunning”控件似乎没有问题。所有嵌套发布都正确执行。

于 2013-11-07T12:50:39.973 回答