我有一个 Web 服务,它一次接收多个 XML 文件,其中包含我需要处理该文件并将值存储到数据库中的学生数据。
为此,我使用了 JMS 队列。我正在创建对象消息并推送到队列。但是当队列正在处理消息时,另一条消息可用于处理,因此我的数据库表被锁定。
考虑到我有一个包含 5000 个值的列表,并且在 for 循环中我正在迭代列表并处理 JMS 消息。
这正是我的情景。问题是在处理一条消息时,我的表被锁定,其余文件仍然在队列中。
提出一些解决方案
编辑:错字和链接
如果我理解正确,数据库处理是在将消息从队列中取出的侦听器中。
您必须担心数据库隔离和表/行锁定,因为每个侦听器都在自己的线程中运行。
您必须锁定行或将数据库上的 ISOLATION 级别设置为 SERIALIZABLE 以保证一次只有一个线程将插入或更新表。