我们正在使用 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();
}
我不确定更改此行为以便能够嵌套/链接消息发布的影响。您认为删除此检查是否安全?其他一些想法?