我遇到了解决该问题的代码问题。我的应用程序需要VPN连接才能从其他系统下载一些信息 因此,我创建了多个作业来从另一个系统下载一些信息,每个作业应该建立VPN连接,然后下载数据,最后关闭连接。我想将所有这些工作包装起来,即使是一个能够处理VPN连接的工作,也只能建立一个紧密连接。
我认为我应该使用一个队列 - ' VPN工作'并将其他工作放在其他队列中。
要建立VPN连接,我必须使用jnc(Juniper network connect)。 我想用ActiveJob和resque运行作业。
我希望我解释说这是可以理解的:)
更新
Image以便更好地理解
- VPN - Wrapper队列到VPN连接
- Q1,Q2,Q3 - 需要一些工作的队列vpn连接
答案 0 :(得分:1)
我认为您应该使用resque-batched-job gem来将您的工作组织成批次。这个gem提供after_enqueue
和after_batch
个钩子。您可以使用它们来建立和关闭VPN连接。
我不确定,但可能这个宝石有能力组织嵌套批次。在这种情况下,您可以创建一个主批处理作业,该作业建立与VPN的连接并运行嵌套批处理作业以上载不同队列中的图像。
仅供参考:Sidekiq开箱即用same functionality (Batch section),但在Pro版本中。