我们正在使用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();
}
我不确定更改此行为的影响,以便能够嵌套/链接邮件发布。你认为删除这张支票是否安全?其他一些想法?
答案 0 :(得分:1)
经过一些测试后,似乎没有问题去除" isRunning"控制。所有嵌套的出版物都可以正确执行。