我想异步运行所有规则以使其线程安全
当我执行负载测试时,为什么 RuleEngine 花费这么多时间来执行所有规则。
NRuleRepository repository = null;
foreach (var rule in rules)
{
repository = new NRuleRepository();
repository.LoadRules(rule.Rule);
var factory = repository.Compile();
var session = factory.CreateSession();
NRuleBody data = null;
foreach (var fact in rule.RuleDataList)
{
data = new NRuleBody();
data.Rule = rule.Rule;
data.RuleData = fact;
session.Insert(data);
}
result += session.Fire();
}
我可以拨打如下电话:
session.FireAsync();
还是有任何其他选项可以触发多个规则但异步?并且 NRuleRepository 类应该在每个请求上重新初始化?