我有一个使用 SQL 传输和 NHibernate 持久性使用 NSB7 构建的非常简单的 Saga。
Saga 侦听一个队列,接收到的每条消息都通过 4 个处理程序运行。它们按顺序调用,2 个处理程序并行运行,最后一个处理程序仅在两个并行处理程序完成后运行。最后一个处理程序将记录写入 DB
假设对于一条消息,每个处理程序需要 1 秒。当收到一条启动 Saga 的新消息时,预期结果是 3-4 秒后记录被写入数据库。
如果队列备份了 1000 条消息,一旦它们再次开始处理,则在最后一个处理程序中创建新记录之前需要将近 2000 秒。基本上,它们不是为每条消息运行预期的 4 秒处理时间,而是有效地聚集在初始处理程序中,直到队列被清空,然后为下一个处理程序再次执行此操作,并不断重复。
关于在负载下如何提高该系统的性能的任何想法,以便源源不断的已处理消息流出来,而不是在一条新记录出现在另一端之前的一堆消息和长时间延迟?
谢谢威尔