当前实现:
有一个队列,消息从该队列被推送到组件,消息从队列被放置在数据库中并被进一步处理。它涉及许多数据库调用并且也需要更多时间。因此需要通过不同的方法来修改它。
其中一个解决方案是:拥有一个并发 Hashmap,其中键作为 header ID,值作为并发链接消息队列。
- Dispatcher – 根据消息头 ID 隔离传入消息,并将它们放置在 ConcurrentHashMap 中,其中键作为 ID,值作为 ConcurrentLinkedQueue 中的值。
- 工作线程 – 工作线程是一个调度线程,它将以指定的时间延迟重复调用处理器。它将每个 header id 下分组的各个队列通过执行器发送到处理器。一旦 map 中的特定 header ID 为空,就会将其删除。
- 处理器 – 从队列(ConcurrentLinkedQueue)中逐条轮询消息并进行处理。
此外,我的一位同事评论道:“该方法应该是可扩展的,因为我们正在考虑从不同主机运行的组件的另一个实例”
请对此进行一些说明。如何做到这一点?非常感谢任何指示或链接或任何帮助。
最佳答案
也许你需要像 Hazelcast ( https://hazelcast.com/ ) 这样的东西,例如 http://docs.hazelcast.org/docs/3.8.3/javadoc/com/hazelcast/core/IMap.html
关于java - 多个 JVM 的并发 HashMap 可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701113/