我正在开发一个简单的 Java EE 5“路由”应用程序。来自一个MQ队列的不同消息先进行转换,然后根据某个字段的值,存储到不同的数据源中(需要调用不同ds中的存储过程)。
例如 valueX -> dataSource1,valueY -> dataSource2。所有数据源都使用不同的 jndi 条目在应用程序服务器中设置。由于应用程序运行时路由信息通常不会改变,是否保存缓存数据源查找?例如,我将实现一个单例,它包含一个哈希图,我在其中存储 valueX->DataSource1。当某个条目不在列表中时,我会进行资源查找并将结果存储在地图中。我是否可以通过缓存获得任何性能,或者这些资源查找是否足够快?
一般来说,构建这种缓存的最佳方法是什么?我也可以将缓存用于其他一些数据库查找。例如,映射 valueX -> 资源名称在 DB 中的一个简单表中定义。按需查找值并将结果保存在地图中,始终进行查找,甚至在启动时读取并保存所有条目是否更好?我需要同步访问吗?我可以只创建一个“枚举”单例实现吗?