Ruby on rails 当类似作业已经运行时,Ruby Resque会重新排队吗?
所以我注意到这是为了防止作业排队。但是,如果我希望我的队列被完全填满,但我想在特定情况被锁定时重新排队,该怎么办呢。为了澄清这一点:因为我的队列由一堆主机组成(例如google.com、yahoo.com、yahoo.com和apple.com),所以我不希望两个相同的主机同时进入不同的worker!我该怎么做?我让resque锁工作,但我不认为它会帮助解决这个问题 示例: 队列:Ruby on rails 当类似作业已经运行时,Ruby Resque会重新排队吗?,ruby-on-rails,ruby,asynchronous,queue,resque,Ruby On Rails,Ruby,Asynchronous,Queue,Resque,所以我注意到这是为了防止作业排队。但是,如果我希望我的队列被完全填满,但我想在特定情况被锁定时重新排队,该怎么办呢。为了澄清这一点:因为我的队列由一堆主机组成(例如google.com、yahoo.com、yahoo.com和apple.com),所以我不希望两个相同的主机同时进入不同的worker!我该怎么做?我让resque锁工作,但我不认为它会帮助解决这个问题 示例: 队列: google.com yahoo.com apple.com apple.com stackoverflow.co
google.com
yahoo.com
apple.com
apple.com
stackoverflow.com
工人:
- 2名工人正在找工作,他们找到了:google.com和yahoo.com(好的)
- 两名员工正在寻找新工作,他们发现:apple.com和apple.com
- 不好,请将第二个apple.com作业放回队列并继续
有没有关于如何处理这种行为的想法?我的示例描述了两个工人的情况,但主要思想是,具有相同主机的两个作业不能同时运行,无论工人数量如何。不允许运行的作业应该放回队列中。我为此制作了自己的resque插件,名为。我为此制作了自己的resque插件,名为。问题:当你将作业重新排队时,它会回到队列中原来的位置,还是回到最末端?@Tilo最末端,否则其他作业将无法得到处理的更改。我有一个类似的问题,但所有作业(具有相同的锁值)都需要保持其排序顺序,因为它们包含的部分数据需要按其进入的顺序进行处理。@Tilo也许您可以在作业参数中跟踪顺序信息,但仍然异步处理作业?问题:当您将作业重新排队时,它会返回到队列中与原始位置相同的位置,还是返回到队列的最末端?@Tilo返回到队列的最末端,否则其他作业将不会得到处理的更改。我有一个类似的问题,但所有作业(具有相同的锁定值)需要保持它们的排序顺序,因为它们包含的部分数据需要按照它进入的顺序进行处理。@Tilo也许您可以跟踪作业参数中的顺序信息,并且仍然异步处理作业?