首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生产者-消费者使用MySQL数据库

生产者-消费者使用MySQL数据库
EN

Stack Overflow用户
提问于 2014-08-14 22:47:18
回答 1查看 452关注 0票数 1

我的要求如下

  • 维护表中的记录池(MySQL DB)。
  • 作业充当生产者,如果条目数量低于某一阈值,则填充此池。这项工作每15分钟进行一次。
  • 可以有多个消费者,每个消费者只获取一个记录。同时来的两个消费者应该得到两个不同的记录。
  • 生产者不应阻止消费者。因此,当生产者作业正在运行时,消费者应该能够选择任何可用的行。

生产者/消费者是应用程序代码的一部分,转身是JBoss应用程序。

为了确保每个消费者选择一个不同的记录(在并发情况下),我们执行以下操作

  • 我们使用整数列作为索引。
  • 使用者将首先用自己的名字用最低的索引值更新记录。
  • 然后,它将选择并捡起该记录并继续执行。
  • 这种方法确保两个消费者的记录不会相同。

我们所看到的一个问题是,当生产者填补池时,消费者会被堵住。由于生产者可能需要一段时间才能完成,所以当使用者的更新等待生产者完成插入时,该期间的所有使用者都会被阻塞。

有什么办法解决这种情况吗?任何其他设计方法也是值得欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2014-08-14 22:55:37

使用关系数据库作为队列是很难的要求吗?这似乎是一种解决问题的糟糕方法,特别是因为消息队列解决了这些问题。您可以使用MySQL来持久化您的队列的状态,但是它本身不会成为一个好的队列。

看看ActiveMQ或JBoss消息传递(考虑到您使用的是JBoss)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25318776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档