我有一个使用Oracle AQ处理信息的应用程序。消息是基于数据库中的记录创建的。应用程序加载要处理的消息并将其安排在内存中供以后使用。应用程序是群集的,因为我有三个问题:适用于Oracle aq应用程序的群集负载平衡器
- 假设消息中有一个变量(值不是常量)。基于此,如果有一个节点处理带有所述变量的消息,则只有该节点应该处理具有相同变量值的消息。
- 启动群集节点时,应该加载所有准备好要处理的记录(消息),但不应加载已加载并处理且尚未处理(已计划)的记录。
- 如果一个群集节点死亡,并且它有记录调度处理,另一个节点应该接管工作(当前节点无法知道其他节点已经调度了什么)。
似乎像Hazelcast这样的分布式缓存可能不是一个好主意,因为性能很重要,并且涉及很多消息(特别是对于第二个问题)。
我的问题是:
一)我找不到任何开箱即用的解决方案对我的问题,看来我需要定制的负载均衡?
b)如果是这样,负载平衡器应该如何知道节点,我是否使用另一个Oracle AQ队列进行通信或类似Hazelcast?