我正在寻找有关使用 Java 处理以下问题集的最佳方法的想法。在这种情况下,最好强调性能。
假设我们有许多银行分行。每个分支都有一个带有传感器的保险库,每当门的状态发生变化时,该传感器就会将消息(在本例中使用 UDP)发送回服务器。
在服务器上,有一个存储从传感器发送的每条消息的某种集合。代码在收到消息时插入一个事件(“door open branch 1”)。当传感器随后发送后续消息(“门已关闭分支 1”)时,该消息将从集合中删除。每条消息都与时间戳一起存储在集合中。
我们想要的是当消息在集合中超过指定的经过时间(例如 2 分钟)时调用一个方法。在这个用例中“金库门已打开超过 2 分钟,请报警”。
最明显的解决方案是让线程休眠 2 分钟,然后唤醒并通过集合检查时间戳。看起来很简单,但不确定它是否是处理问题的更有效方法。它还需要一个并发收集,这不是问题。
在现实世界中,该集合需要处理大约 50K 或更少的消息。
关于如何处理这个问题的任何其他想法?在这种情况下,是否有任何课程可以提供帮助。
谢谢