我正在使用Java,spring-引导和为db一个MongoDB。 在mongo中,我的human
集合结构如下
{
"_id": {
"$oid": "5eaf79f4bce37709f84f6b03"
},
"claimNo": 123
"xrays": [
"xray1",
"xray2",
"xray3"
],
"xray_details": {
"xray1": {},
"xray2": {},
"xray3": {},
},
"claimResult": "A"
}
Xrays
对象包含X射线的名称。 xray_details
包含每个X射线的详细信息。 所以它就像我们最初创建这个文档时; xray_details
和claimresult
不包含任何信息。 我们在它准备好后就会得到信息,例如,对于xray2,我们可能会得到一些信息,但是对于xray3和xray1,我们可能会在15分钟后得到信息。 我们需要做的是,一旦我们有了一些信息,我们需要计算和更新ClaimResult
。
详细说明:在xray_details
中,我们获得了xray2
的信息,但是xray1
和xray3
不可用,因此我们只考虑xray2
并更新claimresult
。 一旦我们得到一些其他X射线信息,即Xray1
,Xray2
,然后我们将使用Xray1
,Xray2
来计算ClaimResult
,并且一旦在稍后我们得到Xray3
,然后我们需要再次检查/确认我们是否已经有使用Xray1
,Xray2
,Xray3
来计算ClaimResult
的信息。
问题:在这个阶段,我们正在制作一个调度器来计算结果,但这并不是有效的,我们需要这样做,一旦信息可用,我们就会考虑到之前已完成的,然后再次计算结果。 不知道像Kafka这样的解决方案是否能在这种情况下工作,但请随时提供您对此有价值的反馈/建议。 谢啦!
正如您所提到的,scheduler在这里不可能是高效的。
为什么排定程序不是最好的:
什么是最好的:
正如你所怀疑的,卡夫卡是最合适的。 与其他消息传递系统相比,我更喜欢Kafka,因为Kafka是持久的
,并且您可以让单个消费者组中的许多消费者并行处理消息
。
每当输入新条目时,向Kafka Topic发布一条消息。 将调度程序应用程序逻辑转换为消息驱动。 它将在发布新消息时自动处理新消息。