README.mdown in resque-bus-0.2.10 vs README.mdown in resque-bus-0.3.0
- old
+ new
@@ -99,9 +99,78 @@
If you want retry to work for subscribing apps, you should run resque-scheduler
$ rake resquebus:driver resque:scheduler
+### Heartbeat
+
+We've found it useful to have the bus act like cron. Triggering timed jobs throughout the system. Resque Bus calls this a heartbeat.
+It uses resque-scheduler to trigger the events. You can enable it in your Rakefile.
+
+ # resque.rake
+ namespace :resque do
+ task :setup => [:environment] do
+ ResqueBus.heartbeat!
+ end
+ end
+
+Or add it to your `schedule.yml` directly
+
+ resquebus_heartbeat:
+ cron: "* * * * *"
+ class: "::ResqueBus::Heartbeat"
+ queue: resquebus_incoming
+ description: "I publish a heartbeat_minutes event every minute"
+
+It is the equivalent of doing this every minute
+
+seconds = minutes * (60)
+hours = minutes / (60)
+days = minutes / (60*24)
+
+now = Time.at(seconds)
+
+attributes = {}
+
+
+ now = Time.now
+ seconds = now.to_i
+ ResqueBus.publish("hearbeat_minutes", {
+ "epoch_seconds" => seconds,
+ "epoch_minutes" => seconds / 1.minute,
+ "epoch_hours" => seconds / 1.hour,
+ "epoch_days" => seconds / 1.day,
+ "minute" => now.min
+ "hour" => now.hour
+ "day" => now.day
+ "month" => now.month
+ "year" => now.year
+ "yday" => now.yday
+ "wday" => now.wday
+ })
+
+This allows you do something like this:
+
+ ResqueBus.dispatch("app_c") do
+ # runs at 10:20, 11:20, etc
+ subscribe "once_an_hour", 'bus_event_type' => 'heartbeat_minutes', 'minute' => 20 do |attributes|
+ Sitemap.generate!
+ end
+
+ # runs every five minutes
+ subscribe "every_five_minutes", 'bus_event_type' => 'heartbeat_minutes' do |attributes|
+ next unless attributes["epoch_minutes"] % 5 == 0
+ HealthCheck.run!
+ end
+
+ # runs at 8am on the first of every month
+ subscribe "new_month_morning", 'bus_event_type' => 'heartbeat_minutes', 'day' => 1, hour' => 8, 'minute' => 0, do |attributes|
+ next unless attributes["epoch_minutes"] % 5 == 0
+ Token.old.expire!
+ end
+ end
+
+
### Compatibility
ResqueBus can live along side another instance of Resque that points at a different Redis server.
# config