pgbus 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 38d33f96cb4a6aa5255b33951818a1a975168d5d40b2b9bc391d8967e00e9854
4
- data.tar.gz: 3c5dae7b2e4f31c63b81b1f11a4d6b96239f8bb5b7589a4465ae0a0834f88f8c
3
+ metadata.gz: fea599f69fd2b216ca1f805da2e72ec594080b02f3ae4c17cb2fe6e7fd0e3359
4
+ data.tar.gz: b03a0bfa5448819822ced10c02de6e14cdacff982f29e7d69234a64dc4b50310
5
5
  SHA512:
6
- metadata.gz: 97330cb59c83f37706c2a1ae5b6ce3c309ab4113287b92e077b34de05242d1fa65b4b0eda488fdc050e5bf0fb896eca0837986f85f3781dbaf0c6ff9ea3248b3
7
- data.tar.gz: ea013b795cf6b677373a1ecf161c7b85633d18f2abf95e0155d2bb870fa0f6f222c499511392d21c9ea9b1ee9ade9862a561d12e38c975f58873ed1abe0f0d13
6
+ metadata.gz: 97b31599de64e76a125f06f1aae701f23fd7177213f3fc90622aefbe4eb484740b52cde1fae04c85428386fd637d6bd32cd16032ecb130455212fb1bd7408c18
7
+ data.tar.gz: 5032cf8a4d1781d162761674496724311589b1897785c2dc90473d7f7264f3d05784c4a6ecbd6de01daa630432b9ba46dbc0f839dd86850ccd2caf10993a3540
data/lib/pgbus/client.rb CHANGED
@@ -42,6 +42,12 @@ module Pgbus
42
42
  "PGMQ schema is not available (#{e.message}). Run `rails db:migrate` for the pgbus database."
43
43
  end
44
44
 
45
+ def ensure_all_queues
46
+ queue_names = collect_configured_queues
47
+ Pgbus.logger.info { "[Pgbus] Bootstrapping #{queue_names.size} queue(s): #{queue_names.join(", ")}" }
48
+ queue_names.each { |name| ensure_queue(name) }
49
+ end
50
+
45
51
  def ensure_dead_letter_queue(name)
46
52
  dlq_name = config.dead_letter_queue_name(name)
47
53
  return if @queues_created[dlq_name]
@@ -228,6 +234,26 @@ module Pgbus
228
234
 
229
235
  private
230
236
 
237
+ def collect_configured_queues
238
+ queues = Set.new
239
+ queues << config.default_queue
240
+
241
+ # Queues from worker configs
242
+ (config.workers || []).each do |w|
243
+ worker_queues = w[:queues] || w["queues"] || [config.default_queue]
244
+ worker_queues.each { |q| queues << q unless q == "*" }
245
+ end
246
+
247
+ # Queues from recurring tasks
248
+ (config.recurring_tasks || {}).each_value do |opts|
249
+ opts = opts.transform_keys(&:to_s) if opts.is_a?(Hash)
250
+ queue = opts["queue"] || opts[:queue]
251
+ queues << queue if queue
252
+ end
253
+
254
+ queues.to_a
255
+ end
256
+
231
257
  def ensure_single_queue(full_name)
232
258
  return if @queues_created[full_name]
233
259
 
@@ -42,6 +42,11 @@ module Pgbus
42
42
  private
43
43
 
44
44
  def boot_processes
45
+ # Bootstrap all configured queues before forking workers.
46
+ # Without this, workers start reading from non-existent queues
47
+ # and recurring task enqueues fail.
48
+ bootstrap_queues
49
+
45
50
  # Boot workers
46
51
  config.workers.each do |worker_config|
47
52
  fork_worker(worker_config)
@@ -280,6 +285,12 @@ module Pgbus
280
285
  end
281
286
  end
282
287
 
288
+ def bootstrap_queues
289
+ Pgbus.client.ensure_all_queues
290
+ rescue StandardError => e
291
+ Pgbus.logger.error { "[Pgbus] Failed to bootstrap queues: #{e.message}" }
292
+ end
293
+
283
294
  def load_rails_app
284
295
  return unless defined?(Rails)
285
296
 
data/lib/pgbus/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pgbus
4
- VERSION = "0.1.7"
4
+ VERSION = "0.1.8"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson