sidekiq_publisher 3.0.0 → 4.0.0
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 +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +5 -0
- data/lib/active_job/queue_adapters/sidekiq_publisher_adapter.rb +16 -3
- data/lib/sidekiq_publisher/database_connection.rb +9 -0
- data/lib/sidekiq_publisher/version.rb +1 -1
- data/lib/sidekiq_publisher/worker.rb +5 -1
- data/lib/sidekiq_publisher.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86345d364ea857b29f80ee4f041dd6837c29e5b5a05111497029d461c31d3e7e
|
4
|
+
data.tar.gz: 32e159819ce58399eab3cd541e99025f0919cee3e0ccd13a54982638769a6857
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a046f7e8a4b39d36215d4676d4467877492cdb26e12cddf5a07a3ff2a52ae78e384657487471a0f0f8443e88cba80583fe53e04914614ef622af8a5b43dfd1e
|
7
|
+
data.tar.gz: c75cd6ec9e1d2af0c745da843b962c6eedf47868451e26b6ddddce438043438f44ec25ed023352bf05580a8266487d9d584421108658218b69ba2751a7664a89
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# sidekiq_publisher
|
2
2
|
|
3
|
+
## 4.0.0
|
4
|
+
- BREAKING: Enqueue directly to Redis unless in a transaction ([#74](https://github.com/ezcater/sidekiq_publisher/pull/74/))
|
5
|
+
|
3
6
|
## 3.0.0
|
4
7
|
- BREAKING: Drop support for Ruby `2.6` and `2.7` as they are [past end of life](https://endoflife.date/ruby)
|
5
8
|
- BREAKING: Drop support for `ddtrace <= 1.8.0`
|
data/README.md
CHANGED
@@ -16,6 +16,11 @@ that modifies the system of record for the application. It also allows jobs to
|
|
16
16
|
be created even when Sidekiq/Redis is temporarily unavailable. The separate
|
17
17
|
publisher process handles retries and ensure that each job is delivered to Sidekiq.
|
18
18
|
|
19
|
+
> :warning: Not all jobs are staged in Postgres. This is determined dynamically:
|
20
|
+
> if the job is enqueued from within an `ActiveRecord` transaction, then it is
|
21
|
+
> staged in Postgres. If not, then it bypasses Postgres and is enqueued directly
|
22
|
+
> to Redis via Sidekiq.
|
23
|
+
|
19
24
|
## Installation
|
20
25
|
|
21
26
|
Add this line to your application's Gemfile:
|
@@ -11,19 +11,28 @@ module ActiveJob
|
|
11
11
|
JOB_WRAPPER_CLASS = ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper.to_s.freeze
|
12
12
|
|
13
13
|
def enqueue(job)
|
14
|
-
|
14
|
+
if SidekiqPublisher::DatabaseConnection.transaction_open?
|
15
|
+
create_job_record(job)
|
16
|
+
else
|
17
|
+
sidekiq_adapter.enqueue(job)
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
21
|
def enqueue_at(job, timestamp)
|
18
|
-
|
22
|
+
if SidekiqPublisher::DatabaseConnection.transaction_open?
|
23
|
+
create_job_record(job, timestamp)
|
24
|
+
else
|
25
|
+
sidekiq_adapter.enqueue_at(job, timestamp)
|
26
|
+
end
|
19
27
|
end
|
20
28
|
|
21
29
|
private
|
22
30
|
|
23
|
-
def
|
31
|
+
def create_job_record(job, timestamp = nil)
|
24
32
|
job.provider_job_id = SidekiqPublisher::Job.generate_sidekiq_jid
|
25
33
|
attributes = job_attributes(job)
|
26
34
|
attributes[:run_at] = timestamp if timestamp.present?
|
35
|
+
|
27
36
|
SidekiqPublisher::Job.create!(attributes).job_id
|
28
37
|
end
|
29
38
|
|
@@ -36,6 +45,10 @@ module ActiveJob
|
|
36
45
|
args: [job.serialize],
|
37
46
|
}
|
38
47
|
end
|
48
|
+
|
49
|
+
def sidekiq_adapter
|
50
|
+
@_sidekiq_adapter ||= ActiveJob::QueueAdapters::SidekiqAdapter.new
|
51
|
+
end
|
39
52
|
end
|
40
53
|
end
|
41
54
|
end
|
@@ -10,7 +10,11 @@ module SidekiqPublisher
|
|
10
10
|
|
11
11
|
module ClassMethods
|
12
12
|
def client_push(item)
|
13
|
-
SidekiqPublisher::
|
13
|
+
if SidekiqPublisher::DatabaseConnection.transaction_open?
|
14
|
+
SidekiqPublisher::Job.create_job!(item)
|
15
|
+
else
|
16
|
+
super
|
17
|
+
end
|
14
18
|
end
|
15
19
|
end
|
16
20
|
end
|
data/lib/sidekiq_publisher.rb
CHANGED
@@ -4,6 +4,7 @@ require "active_support"
|
|
4
4
|
require "active_support/core_ext/numeric/time"
|
5
5
|
require "sidekiq_publisher/version"
|
6
6
|
require "sidekiq_publisher/compatibility"
|
7
|
+
require "sidekiq_publisher/database_connection"
|
7
8
|
require "sidekiq_publisher/instrumenter"
|
8
9
|
require "sidekiq_publisher/metrics_reporter"
|
9
10
|
require "sidekiq_publisher/exception_reporter"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_publisher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ezCater, Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|
@@ -309,6 +309,7 @@ files:
|
|
309
309
|
- lib/sidekiq_publisher.rb
|
310
310
|
- lib/sidekiq_publisher/client.rb
|
311
311
|
- lib/sidekiq_publisher/compatibility.rb
|
312
|
+
- lib/sidekiq_publisher/database_connection.rb
|
312
313
|
- lib/sidekiq_publisher/datadog_apm.rb
|
313
314
|
- lib/sidekiq_publisher/engine.rb
|
314
315
|
- lib/sidekiq_publisher/exception_reporter.rb
|
@@ -344,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
344
345
|
- !ruby/object:Gem::Version
|
345
346
|
version: '0'
|
346
347
|
requirements: []
|
347
|
-
rubygems_version: 3.
|
348
|
+
rubygems_version: 3.2.33
|
348
349
|
signing_key:
|
349
350
|
specification_version: 4
|
350
351
|
summary: Publisher for enqueuing jobs to Sidekiq
|