sql >> Databasteknik >  >> NoSQL >> MongoDB

köra bara ett av många dubbletter med sidekiq?

Mitt första förslag skulle vara en mutex för detta specifika jobb. Men eftersom det finns en chans att du kan ha flera applikationsservrar som arbetar med sidekiq-jobben, skulle jag föreslå något på redis-nivå.

Använd till exempel redis-semaphore inom din sidekiq-arbetardefinition. Ett oprövat exempel :

def perform
  s = Redis::Semaphore.new(:map_reduce_semaphore, connection: "localhost")

  # verify that this sidekiq worker is the first to reach this semaphore.
  unless s.locked?

    # auto-unlocks in 90 seconds. set to what is reasonable for your worker.
    s.lock(90)
    your_map_reduce()
    s.unlock
  end
end

def your_map_reduce
  # ...
end


  1. Förhindrar databasrelaterade tävlingsförhållanden i Node.js

  2. Lagra och hämta fil i MongoDB med Java &GridFs

  3. Frågar nullvärde i MongoDB

  4. Vilken är den bästa metoden för att se en Node / MongoDB-applikation?