【发布时间】:2010-02-17 16:03:48
【问题描述】:
我有一个系统,其中一些松散耦合的组件通过 JMS 交换消息进行通信。我现在正在研究一个新要求,该要求导致某些共享资源需要保护以防止两个或多个组件同时访问(或多或少是读/写问题的一个实例)。我正在寻找一种方法来协调对共享资源的访问,而不会给系统增加太多额外的复杂性。 (例如,如果不需要,我不想添加专用的分布式锁管理器)。
我的脑海中有一个部分解决方案,它将使用 JMS 基础架构作为其基础。基本上,将锁定消息发送到队列。如果 writer 队列中有消息,则在发送消息的组件再次将其删除之前,没有人可以向该队列发布消息。同样,当读者开始阅读资源时,他们会向读者队列发送一条消息,并在完成后将其删除。直到看到读者和作者队列都是空的,写者才会开始写。读取器在看到一个空的写入器队列之前不会启动。
当然,我需要找到一种方法来同步对两个队列的访问,以便写入器不会发布到写入器队列,而读取器会发布到已经看到空写入器队列的读取器队列......
这样的事情可以通过合理的工作量来解决吗?在 JMS 之上是否存在锁管理器的现有实现?您会推荐有关该主题的任何论文吗?
【问题讨论】:
标签: concurrency locking jms distributed