rabbit_jobs 0.4.8 → 0.4.9

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.
data/lib/rabbit_jobs.rb CHANGED
@@ -79,6 +79,20 @@ module RabbitJobs
79
79
  end
80
80
  end
81
81
 
82
+ def direct_publish_to(routing_key, payload, ex = {}, &block)
83
+ if RJ.running?
84
+ RJ::Publisher.direct_publish_to(routing_key, payload, ex, &block)
85
+ else
86
+ RJ.run {
87
+ RJ::Publisher.direct_publish_to(routing_key, payload, ex) {
88
+ RJ.stop {
89
+ yield if block_given?
90
+ }
91
+ }
92
+ }
93
+ end
94
+ end
95
+
82
96
  def purge_queue(*routing_keys, &block)
83
97
  if RJ.running?
84
98
  RJ::Publisher.purge_queue(*routing_keys, &block)
@@ -38,6 +38,11 @@ module RabbitJobs
38
38
  class Configuration
39
39
  include Helpers
40
40
 
41
+ DEFAULT_EXCHANGE_PARAMS = {
42
+ auto_delete: false,
43
+ durable: true
44
+ }
45
+
41
46
  DEFAULT_QUEUE_PARAMS = {
42
47
  auto_delete: false,
43
48
  exclusive: false,
@@ -13,21 +13,36 @@ module RabbitJobs
13
13
  publish_to(RJ.config.default_queue, klass, *params, &block)
14
14
  end
15
15
 
16
- def publish_to(routing_key, klass, *params)
16
+ def publish_to(routing_key, klass, *params, &block)
17
17
  raise ArgumentError.new("klass=#{klass.inspect}") unless klass && (klass.is_a?(Class) || klass.is_a?(String))
18
18
  raise ArgumentError.new("routing_key=#{routing_key}") unless routing_key && (routing_key.is_a?(Symbol) || routing_key.is_a?(String)) && !!RJ.config[:queues][routing_key.to_s]
19
19
 
20
- begin
21
- payload = {
22
- 'class' => klass.to_s,
23
- 'opts' => {'created_at' => Time.now.to_i},
24
- 'params' => params
25
- }.to_json
20
+ payload = {
21
+ 'class' => klass.to_s,
22
+ 'opts' => {'created_at' => Time.now.to_i},
23
+ 'params' => params
24
+ }.to_json
25
+
26
+ direct_publish_to(RJ.config.queue_name(routing_key.to_s), payload, &block)
27
+ end
28
+
29
+ def direct_publish_to(routing_key, payload, ex = {}, &block)
30
+ raise ArgumentError.new("Need to pass exchange name") if ex.size > 0 && ex[:name].to_s.empty?
26
31
 
32
+ begin
27
33
  AmqpHelper.prepare_channel
28
34
 
29
- AMQP.channel.default_exchange.publish(payload, Configuration::DEFAULT_MESSAGE_PARAMS.merge({key: RJ.config.queue_name(routing_key.to_s)})) do
30
- yield if block_given?
35
+ if ex.size > 0
36
+ AMQP::Exchange.new(AMQP.channel, :direct, ex[:name].to_s, Configuration::DEFAULT_EXCHANGE_PARAMS.merge(ex[:params] || {})) do |exchange|
37
+ exchange.publish(payload, Configuration::DEFAULT_MESSAGE_PARAMS.merge({key: routing_key.to_s})) do
38
+ puts 'published'
39
+ yield if block_given?
40
+ end
41
+ end
42
+ else
43
+ AMQP.channel.default_exchange.publish(payload, Configuration::DEFAULT_MESSAGE_PARAMS.merge({key: routing_key.to_s})) do
44
+ yield if block_given?
45
+ end
31
46
  end
32
47
  rescue
33
48
  RJ.logger.warn $!.message
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  module RabbitJobs
4
- VERSION = "0.4.8"
4
+ VERSION = "0.4.9"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbit_jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amqp
16
- requirement: &8002740 !ruby/object:Gem::Requirement
16
+ requirement: &18157120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *8002740
24
+ version_requirements: *18157120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &8001720 !ruby/object:Gem::Requirement
27
+ requirement: &18156240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *8001720
35
+ version_requirements: *18156240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rufus-scheduler
38
- requirement: &7999500 !ruby/object:Gem::Requirement
38
+ requirement: &18154400 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *7999500
46
+ version_requirements: *18154400
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rails
49
- requirement: &7998120 !ruby/object:Gem::Requirement
49
+ requirement: &18152580 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '3.0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *7998120
57
+ version_requirements: *18152580
58
58
  description: Background jobs on RabbitMQ
59
59
  email:
60
60
  - lazureykis@gmail.com
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  segments:
117
117
  - 0
118
- hash: -3954534077843511832
118
+ hash: 4333818032830875037
119
119
  required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  none: false
121
121
  requirements:
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  version: '0'
125
125
  segments:
126
126
  - 0
127
- hash: -3954534077843511832
127
+ hash: 4333818032830875037
128
128
  requirements: []
129
129
  rubyforge_project:
130
130
  rubygems_version: 1.8.11