Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql RubyonRails数据库队列_Mysql_Ruby On Rails_Ruby_Database - Fatal编程技术网

Mysql RubyonRails数据库队列

Mysql RubyonRails数据库队列,mysql,ruby-on-rails,ruby,database,Mysql,Ruby On Rails,Ruby,Database,在我的RubyonRails web应用程序中,我想对DML操作进行排队 现在我不知道是最好使用现有队列(如RabbitMQ)还是编写自己的队列,但我想编写自己的队列是个好主意 关于如何编写数据库队列并将其集成到RubyonRails中,您有什么建议吗 谢谢 通常,您需要一些自己的消费者-生产者实现。您可以创建自己的处理器和任务,这并不难。下面是一个您可以使用的示例。只需使用MySQL实现自己的后端逻辑 模块MyJobs def self.backend @后端 结束 def self.back

在我的RubyonRails web应用程序中,我想对DML操作进行排队

现在我不知道是最好使用现有队列(如RabbitMQ)还是编写自己的队列,但我想编写自己的队列是个好主意

关于如何编写数据库队列并将其集成到RubyonRails中,您有什么建议吗


谢谢

通常,您需要一些自己的消费者-生产者实现。您可以创建自己的处理器和任务,这并不难。下面是一个您可以使用的示例。只需使用MySQL实现自己的后端逻辑

模块MyJobs
def self.backend
@后端
结束
def self.backend=(后端)
@后端=后端
结束
类处理器
def self.start(并发性=1)
concurrency.times{n|new(“处理器{n}”)}
结束
def初始化(名称)
thread=thread.new do
环道
有效负载=MyJobs.backend.pop
worker\u class=有效负载[:worker]
worker_class.new.perform(*有效负载[:args])
结束
结束
thread.name=名称
结束
结束
模块工人
模块类方法
def执行异步(*args)
MyJobs.backend.push(worker:self,args:args)
结束
结束
结束
结束
MyJobs.backend=Queue.new
MyJobs::Processor.start(5)

这有点主观,但我不会自己写,尤其是您可能对队列不太熟悉。我建议使用redis和resque gem,是的,我已经考虑过这一点,但没有找到关于数据库的任何教程。正如Tim所说,这个问题非常主观,但是,可能会有帮助。就消息而言,redis是队列的数据库,它在某些方面非常好——但它显然不是sql。所以,非常简单的一点是,你将某个东西放入一个队列,另一个进程使用它并以某种方式处理它。您是否关心查询队列中等待消费的内容?或者在使用时如何将其作为过程的一部分放入数据库。当然,你可以自己决定,所以我会看一看是否有什么可以帮助你,请忽略以下评论:)不,我不能使用redis。我有一个现有的MySQL数据库。我想我自己去实现它是个好主意,但我甚至不知道从哪里开始。我的应用程序很少,数据库也不大