我们需要在一天内处理大约5MM的消息,并根据某些业务规则,为异步接收的消息生成唯一标识符。
用例: -
系统收到消息A,消息B,消息C和消息D(所有消息类型的标准xml格式)。
业务规则: - 如果邮件A包含标记 df['Title'] = df['Title'].apply(lambda x: [item for item in x if item not in stop])
df['Body'] = df['Body'].apply(lambda x: [item for item in x if item not in stop])
,则标记值与邮件B,C或<tag1>
,<tag2>
,<tag3>
的值相匹配d;分配为第一次匹配分配的标识符。如果没有匹配,则生成新标识并分配给消息A.
类似的规则适用于消息B,C或D.
我们考虑过使用Drools Engine实现来支持上述用例,但不确定它是否能够处理如此大量的数据并在实时处理。
是否有人使用Drools Engine处理大量数据?如果有,请您分享问题或统计数据。
答案 0 :(得分:0)
对于只检查4个条件的简单规则,您描述的Drools的执行速度将超过足够快。只需确保您只编译一次rool而不是每次执行规则。您可能会看到在热状态下每分钟几乎没有100_000个规则调用的性能与上面描述的简单规则相比。
看看这些基准,以获得更好的想法: https://github.com/winklerm/phreak-examples/tree/master/benchmark