我还没有真正使用过Resque。我有以下问题和假设,我想验证:
1)我了解您可以通过将每个resque实例配置为指向中央redis服务器来实现多服务器架构。正确的吗?
2)这是否意味着任何resque实例都可以将项添加到队列中,任何工作者都可以处理这些队列中的任何一个?
3)多个工作人员可以响应队列中的同一项吗?即一个服务器放置"项目2已更新"在队列中,不同服务器上的1,2和3工作者都可以采取行动吗?或者我需要创建单独的队列?我想要一个pub / sub类型的任务。
4)Sinatra监控应用程序是否存在于每个Resque实例上?或者只有一个知道所有队列和工作人员的应用程序?
5)Resque知道任务何时完成?即监控应用程序是否显示任务正在进行中?或者只是一个工人拿走了它?
6)监控应用程序是否显示已完成的任务?即如果任务快速完成,我能否在最近的某个时刻看到该任务已完成?
7)我是否可以通过编程方式查询任务是否已启动,正在进行或已完成?
答案 0 :(得分:0)
由于我在项目中广泛使用resque,因此您的查询的答案很少:
我了解您可以通过将每个resque实例配置为指向中央redis服务器来实现多服务器体系结构。正确的吗?
答:是的,您有多个服务器指向单个resque服务器。我正在运行类似的架构。
这是否意味着任何resque实例都可以将项添加到队列中,任何工作人员都可以处理这些队列中的任何一个?
Ans:这取决于您配置服务器的方式,您必须创建队列并为他们分配工作人员。
您可以拥有多个队列,每个队列可以有多个工作人员处理它们。
多个工作人员可以响应队列中的同一项吗?即一个服务器将“项目2已更新”放入队列中,工作人员1,2和3可以在不同的服务器上进行操作吗?或者我需要创建单独的队列?我想要一个pub / sub类型的任务。
Ans:这再次根据您的要求,如果您想要一个队列并且所有工作人员都在工作,这也是有效的。
或者如果你想为每个服务器分别建立队列,你也可以这样做。
任何服务器都可以将作业放在任何队列中,但只有已分配的工作人员才能接收并处理该作业
Sinatra监控应用程序是否存在于每个Resque实例上?或者只有一个知道所有队列和工作人员的应用程序?
Ans:Sinatra监控应用程序为您提供了一个界面,您可以在其中查看所有与工作人员/队列相关的信息,例如正在运行的作业,等待作业,队列和失败的作业等。
Resque知道任务何时完成?即监控应用程序是否显示任务正在进行中?或者只是一个工人拿走了它? Ans:确实如此,基本上resque还维护内部队列来管理所有工作。
答:是的,它会显示有关工作的每个统计数据。
显示器应用程序是否显示已完成的任务?即如果任务快速完成,我能否在最近的某个时刻看到该任务已完成?
答:是的,你可以做到
例如,要知道哪些工作人员正在使用Resque.working,同样您可以检查他们的代码库并使用任何东西。
Resque是一个非常强大的库,我们现在使用了一年多。
干杯快乐的编码!!