成功发送消息-Delayed_job

时间:2019-07-16 22:52:22

标签: ruby-on-rails delayed-job

如何在作业成功完成后发送消息?当工作正确完成时,我想发送消息并将其显示在javascript中的swal中,但是我不知道该怎么做,有什么建议吗?

除了发送消息外,我不需要做任何其他事情

class CompileProjectJob < Struct.new(:url)
  def perform
  end

  def success(job)
     #send message when the work is successful
  end
end

1 个答案:

答案 0 :(得分:0)

perform方法的末尾,新的延迟作业排队发送消息

class CompileProjectJob < Struct.new(:url)
  def perform
    # the code here of this job 
    # queue new job 
  end
end

perform方法的代码按任何常规代码顺序执行

更新

要将消息发送到前端,有两种方法(推和拉)more info  -推送:使用网络套接字将消息从后端推送到前端  -拉:前端每隔一定时间发送一次请求,以检查后端是否有新数据

,您可以使用这些技术中的任何一种来解决问题

如果使用了 pulling ,您将使作业更新数据存储,例如Redis或mysql。在某些情况下,前端会每隔一个间隔发送一个请求以检查新数据,这将是一个更好的解决方案,但我认为您正在寻找其他技术

推动: 在这里您可以使用有源电缆https://guides.rubyonrails.org/action_cable_overview.html之类的东西 或推杆https://www.pusher.com/tutorials/realtime-table-ruby-rails之类的第三方 这里的主要思想是您的前端应用程序将打开与服务器的Websocket连接。该套接字将保持打开状态,并通过一个通道侦听来自后端的任何更新,因此当您通过该通道完成作业后发送更新时,前端将收到该消息,因此您可以添加代码以显示消息