sevak 0.4.1 → 0.4.3
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/Gemfile +1 -1
- data/Gemfile.lock +7 -7
- data/README.md +11 -7
- data/Rakefile +9 -9
- data/lib/sevak/publisher.rb +4 -4
- data/lib/sevak/version.rb +1 -1
- data/sevak.gemspec +4 -4
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aae70e907924a87e7ed575dd9b8cff9002d4d9b
|
4
|
+
data.tar.gz: 7cfd25590517f9de9846d4e5038bb2b9103d8704
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fecdbf97f75e58192288b208c06e9ec3f9d02d1867571235429096cf7377d49fd2f00ed961e5a119b9d0fb365c6689609dd1c62f67d39abca928c41060b80ea
|
7
|
+
data.tar.gz: 188228a271d2b78882556585c5a7e776eb8164e260256647888c585047c62916e26746cc37b9f676f0bbce5da9ac38db85da60920a6b1107c113c46d31cca735
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sevak (0.4.
|
5
|
-
bunny
|
4
|
+
sevak (0.4.3)
|
5
|
+
bunny (~> 2.7)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
amq-protocol (2.
|
11
|
-
bunny (2.
|
12
|
-
amq-protocol (
|
10
|
+
amq-protocol (2.3.0)
|
11
|
+
bunny (2.9.1)
|
12
|
+
amq-protocol (~> 2.3.0)
|
13
13
|
coderay (1.1.2)
|
14
14
|
ffi (1.9.18)
|
15
15
|
formatador (0.2.5)
|
@@ -56,7 +56,7 @@ PLATFORMS
|
|
56
56
|
ruby
|
57
57
|
|
58
58
|
DEPENDENCIES
|
59
|
-
bunny
|
59
|
+
bunny (~> 2.7)
|
60
60
|
guard
|
61
61
|
guard-minitest
|
62
62
|
highline
|
@@ -66,4 +66,4 @@ DEPENDENCIES
|
|
66
66
|
sevak!
|
67
67
|
|
68
68
|
BUNDLED WITH
|
69
|
-
1.16.
|
69
|
+
1.16.1
|
data/README.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# Current version
|
2
|
+
|
3
|
+
0.4.3
|
4
|
+
|
1
5
|
Sevak gem makes it easy to send and receive messages from rabbitmq queues. It is built on top of the bunny gem.
|
2
6
|
It also supports delayed queuing using [rabbitmq delayed exchange plugin](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange)
|
3
7
|
|
@@ -13,7 +17,7 @@ To install this plugin:
|
|
13
17
|
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
|
14
18
|
|
15
19
|
# Installation
|
16
|
-
|
20
|
+
|
17
21
|
gem install sevak
|
18
22
|
|
19
23
|
# Configuration
|
@@ -33,19 +37,19 @@ Create a file under `config/initializers` and add following lines to that file:
|
|
33
37
|
### Publishing to a queue
|
34
38
|
|
35
39
|
To publish any message to a queue use the following syntax:
|
36
|
-
|
40
|
+
|
37
41
|
Sevak::Publisher.publish(*queue_name*, *message*)
|
38
42
|
|
39
43
|
If the queue is not present already it will be created automatically.
|
40
44
|
|
41
|
-
Example:
|
45
|
+
Example:
|
42
46
|
|
43
47
|
Sevak::Publisher.delayed_publish('sms', message = { name: 'Deepak', msisdn: '9078657543' })
|
44
48
|
|
45
49
|
### Publishing to a queue with a delay
|
46
50
|
|
47
51
|
To publish any message to a queue with some delay use the following syntax:
|
48
|
-
|
52
|
+
|
49
53
|
Sevak::Publisher.publish(*queue_name*, *message*, *delay in milliseconds*)
|
50
54
|
|
51
55
|
Example:
|
@@ -58,13 +62,13 @@ This will publish the message to an exchange which will route the message to the
|
|
58
62
|
To receive message from this queue and process the message create a consumer file for each queue in your project under `app/consumers`.
|
59
63
|
|
60
64
|
class SmsConsumer < Sevak::Consumer
|
61
|
-
|
65
|
+
|
62
66
|
queue_name 'sms'
|
63
|
-
|
67
|
+
|
64
68
|
def run(message)
|
65
69
|
*process the message*
|
66
70
|
end
|
67
|
-
|
71
|
+
|
68
72
|
..
|
69
73
|
end
|
70
74
|
|
data/Rakefile
CHANGED
@@ -26,7 +26,7 @@ namespace :consumer do
|
|
26
26
|
cli = HighLine.new
|
27
27
|
|
28
28
|
consumer_name = cli.ask('Input consumer name(eg. push_alert) :') { |q| q.validate = /\A[a-z]+[a-z_]+[a-z]\z/}
|
29
|
-
queue_name = cli.ask('Input queue name(eg.
|
29
|
+
queue_name = cli.ask('Input queue name(eg. myqueue)') { |q| q.validate = /\A[a-z]+[a-z.]+[a-z]\z/}
|
30
30
|
|
31
31
|
to_class_name = Proc.new do |name|
|
32
32
|
name.split('_').map(&:capitalize).join
|
@@ -34,7 +34,7 @@ namespace :consumer do
|
|
34
34
|
|
35
35
|
text1 = <<-CODE
|
36
36
|
|
37
|
-
module
|
37
|
+
module Sevak
|
38
38
|
|
39
39
|
class #{to_class_name.call(consumer_name)}Consumer < Consumer
|
40
40
|
|
@@ -49,13 +49,13 @@ end
|
|
49
49
|
|
50
50
|
CODE
|
51
51
|
|
52
|
-
if File.exists?("
|
53
|
-
puts "Already exists file:
|
52
|
+
if File.exists?("app/consumers/#{consumer_name}_consumer.rb")
|
53
|
+
puts "Already exists file: app/consumers/#{consumer_name}_consumer.rb"
|
54
54
|
ans = cli.ask('Do you want to overwrite it ? (y/n)') { |q| q.validate = /Y|N|y|n/}
|
55
55
|
exit(-1) if ans.downcase == 'n'
|
56
56
|
end
|
57
57
|
|
58
|
-
file = File.open("
|
58
|
+
file = File.open("app/consumers/#{consumer_name}_consumer.rb", 'w+')
|
59
59
|
file.write(text1)
|
60
60
|
file.close
|
61
61
|
|
@@ -64,20 +64,20 @@ namespace :sevak do
|
|
64
64
|
|
65
65
|
desc "Run the #{consumer_name} worker"
|
66
66
|
task :#{consumer_name} do
|
67
|
-
consumer =
|
67
|
+
consumer = Sevak::#{to_class_name.call(consumer_name)}Consumer.new
|
68
68
|
consumer.start
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
CODE
|
73
73
|
|
74
|
-
if File.exists?("tasks/#{consumer_name}.rake")
|
75
|
-
puts "Already exists file: tasks/#{consumer_name}.rake"
|
74
|
+
if File.exists?("lib/tasks/#{consumer_name}.rake")
|
75
|
+
puts "Already exists file: lib/tasks/#{consumer_name}.rake"
|
76
76
|
ans = cli.ask('Do you want to overwrite it ? (y/n)') { |q| q.validate = /Y|N|y|n/}
|
77
77
|
exit(-1) if ans.downcase == 'n'
|
78
78
|
end
|
79
79
|
|
80
|
-
file = File.open("tasks/#{consumer_name}.rake", 'w+')
|
80
|
+
file = File.open("lib/tasks/#{consumer_name}.rake", 'w+')
|
81
81
|
file.write(text2)
|
82
82
|
file.close
|
83
83
|
|
data/lib/sevak/publisher.rb
CHANGED
@@ -10,7 +10,7 @@ module Sevak
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.delayed_publish(queue_name, message, delay = 0)
|
13
|
-
instance.publish_exchange(queue_name, message, delay)
|
13
|
+
instance.publish_exchange(queue_name, message, delay.to_i)
|
14
14
|
end
|
15
15
|
|
16
16
|
def channel
|
@@ -18,16 +18,16 @@ module Sevak
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def queue(queue_name)
|
21
|
-
channel.queue(queue_name)
|
21
|
+
channel.queue(queue_name, durable: true)
|
22
22
|
end
|
23
23
|
|
24
24
|
def exchange(queue_name)
|
25
|
-
channel.exchange("#{queue_name}_exchange", type:
|
25
|
+
channel.exchange("#{queue_name}_exchange", type: 'x-delayed-message', durable: true, arguments: { 'x-delayed-type' => 'direct' })
|
26
26
|
end
|
27
27
|
|
28
28
|
def publish_exchange(queue_name, message, delay)
|
29
29
|
queue(queue_name).bind(exchange(queue_name))
|
30
|
-
exchange(queue_name).publish(message.to_json, headers: {
|
30
|
+
exchange(queue_name).publish(message.to_json, headers: { 'x-delay' => delay })
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
data/lib/sevak/version.rb
CHANGED
data/sevak.gemspec
CHANGED
@@ -9,16 +9,16 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Deepak Kumar']
|
10
10
|
spec.email = ['deepakkumarnd@gmail.com']
|
11
11
|
|
12
|
-
spec.summary = %q{
|
13
|
-
spec.description = %q{
|
14
|
-
spec.homepage = ''
|
12
|
+
spec.summary = %q{Create rabbitmq consumers}
|
13
|
+
spec.description = %q{Sevak lets you easily add consumers in your rails app}
|
14
|
+
spec.homepage = 'https://github.com/chillr/sevak'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
18
|
spec.bindir = 'exe'
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
|
-
spec.add_runtime_dependency 'bunny'
|
21
|
+
spec.add_runtime_dependency 'bunny', '~> 2.7'
|
22
22
|
|
23
23
|
# spec.add_development_dependency 'bundler', '~> 1.9'
|
24
24
|
# spec.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
@@ -1,30 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sevak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Deepak Kumar
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
description:
|
26
|
+
version: '2.7'
|
27
|
+
description: Sevak lets you easily add consumers in your rails app
|
28
28
|
email:
|
29
29
|
- deepakkumarnd@gmail.com
|
30
30
|
executables: []
|
@@ -49,7 +49,7 @@ files:
|
|
49
49
|
- lib/sevak/version.rb
|
50
50
|
- sevak.gemspec
|
51
51
|
- tasks/.keep
|
52
|
-
homepage:
|
52
|
+
homepage: https://github.com/chillr/sevak
|
53
53
|
licenses:
|
54
54
|
- MIT
|
55
55
|
metadata: {}
|
@@ -72,5 +72,5 @@ rubyforge_project:
|
|
72
72
|
rubygems_version: 2.6.10
|
73
73
|
signing_key:
|
74
74
|
specification_version: 4
|
75
|
-
summary:
|
75
|
+
summary: Create rabbitmq consumers
|
76
76
|
test_files: []
|