jerryluk-rabbitmq-jruby-client 0.1.1 → 0.1.2

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.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jerryluk-rabbitmq-jruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry Luk
@@ -21,14 +21,8 @@ extensions: []
21
21
 
22
22
  extra_rdoc_files: []
23
23
 
24
- files:
25
- - README
26
- - MIT-LICENSE
27
- - lib/commons-cli-1.1.jar
28
- - lib/commons-io-1.2.jar
29
- - lib/rabbitmq-client.jar
30
- - lib/junit.jar
31
- - lib/rabbitmq_client.rb
24
+ files: []
25
+
32
26
  has_rdoc: false
33
27
  homepage: http://www.linkedin.com/in/jerryluk
34
28
  post_install_message:
data/MIT-LICENSE DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2009 Jerry Luk <jerryluk@gmail.com>
2
-
3
- Permission is hereby granted, free of charge, to any person
4
- obtaining a copy of this software and associated documentation
5
- files (the "Software"), to deal in the Software without
6
- restriction, including without limitation the rights to use,
7
- copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the
9
- Software is furnished to do so, subject to the following
10
- conditions:
11
-
12
- The above copyright notice and this permission notice shall be
13
- included in all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
- OTHER DEALINGS IN THE SOFTWARE.
data/README DELETED
@@ -1,22 +0,0 @@
1
-
2
- This project is a JRuby wrapper of the Java RabbitMQ Client from Rabbit Technologies
3
-
4
- http://www.rabbitmq.com/
5
-
6
- Using this library does not require you to use EventMachine for subscribing a RabbitMQ queue.
7
-
8
- To use RabbitMQ JRuby Client with Workling:
9
- 1. Copy workling_rabbitmq_client.rb and workling_rabbitmq_subscriber.rb to lib
10
- Create an initializer 'rabbitmq.rb' in 'config/initializers'
11
-
12
- require 'workling_rabbitmq_client'
13
- Workling::Remote.dispatcher = Workling::Remote::Runners::ClientRunner.new
14
- Workling::Remote.dispatcher.client = Workling::Clients::WorklingRabbitMQClient.new
15
-
16
- Optional: To use subscriber
17
- Modify vendor/plugins/workling/script/listen.rb, added this after the require statements
18
-
19
- require 'workling_rabbitmq_subscriber'
20
-
21
- To start Workling: (You can use script/workling_client because it uses daemons)
22
- jruby vendor/plugins/workling/script/listen.rb
Binary file
Binary file
data/lib/junit.jar DELETED
Binary file
Binary file
@@ -1,151 +0,0 @@
1
- require 'java'
2
- require File.dirname(__FILE__) + '/junit.jar'
3
- require File.dirname(__FILE__) + '/commons-cli-1.1.jar'
4
- require File.dirname(__FILE__) + '/commons-io-1.2.jar'
5
- require File.dirname(__FILE__) + '/rabbitmq-client.jar'
6
-
7
- class RabbitMQClient
8
- include ObjectSpace
9
- include_class('com.rabbitmq.client.Connection')
10
- include_class('com.rabbitmq.client.ConnectionParameters')
11
- include_class('com.rabbitmq.client.ConnectionFactory')
12
- include_class('com.rabbitmq.client.Channel')
13
- include_class('com.rabbitmq.client.Consumer')
14
- include_class('com.rabbitmq.client.DefaultConsumer')
15
- include_class('java.lang.String') { |package, name| "J#{name}" }
16
-
17
- class QueueConsumer < DefaultConsumer
18
- def initialize(channel, block)
19
- @channel = channel
20
- @block = block
21
- super(channel)
22
- end
23
-
24
- def handleDelivery(consumer_tag, envelope, properties, body)
25
- delivery_tag = envelope.get_delivery_tag
26
- message_body = Marshal.load(String.from_java_bytes(body))
27
- @block.call message_body
28
- @channel.basic_ack(delivery_tag, false)
29
- end
30
- end
31
-
32
- class Queue
33
- def initialize(name, channel)
34
- @name = name
35
- @channel = channel
36
- @channel.queue_declare(name)
37
- self
38
- end
39
-
40
- def bind(exchange, routing_key=nil)
41
- @routing_key = routing_key || "#{@name}_#{Time.new.to_i.to_s}_#{rand(100).to_s}"
42
- @exchange = exchange
43
- @channel.queue_bind(@name, @exchange.name, @routing_key)
44
- self
45
- end
46
-
47
- def publish(message_body, props=nil)
48
- auto_bind
49
- message_body_byte = Marshal.dump(message_body).to_java_bytes
50
- @channel.basic_publish(@exchange.name, @routing_key, props, message_body_byte)
51
- message_body
52
- end
53
-
54
- def retrieve
55
- auto_bind
56
- message_body = nil
57
- no_ack = false
58
- response = @channel.basic_get(@name, no_ack)
59
- if response
60
- props = response.get_props
61
- message_body = Marshal.load(String.from_java_bytes(response.get_body))
62
- delivery_tag = response.get_envelope.get_delivery_tag
63
- @channel.basic_ack(delivery_tag, false)
64
- end
65
- message_body
66
- end
67
-
68
- def subscribe(&block)
69
- no_ack = false
70
- @channel.basic_consume(@name, no_ack, QueueConsumer.new(@channel, block))
71
- end
72
-
73
- protected
74
- def auto_bind
75
- unless @exchange
76
- exchange = Exchange.new("@name_exchange", 'fanout', @channel)
77
- self.bind(exchange)
78
- end
79
- end
80
- end
81
-
82
- class Exchange
83
- attr_reader :name
84
-
85
- def initialize(name, type, channel)
86
- @name = name
87
- @type = type
88
- @channel = channel
89
- @channel.exchange_declare(@name, type.to_s)
90
- self
91
- end
92
- end
93
-
94
- # Class Methods
95
- class << self
96
- end
97
-
98
- attr_reader :channel
99
- attr_reader :connection
100
-
101
- # Instance Methods
102
- def initialize(options={})
103
- # server address
104
- @host = options[:host] || '127.0.0.1'
105
- @port = options[:port] || 5672
106
-
107
- # login details
108
- @username = options[:username] || 'guest'
109
- @password = options[:password] || 'guest'
110
- @vhost = options[:vhost] || '/'
111
-
112
- # queues and exchanges
113
- @queues = {}
114
- @exchanges = {}
115
-
116
- connect
117
- # Disconnect before the object is destroyed
118
- define_finalizer(self, lambda {|id| self.disconnect if self.connected? })
119
- self
120
- end
121
-
122
- def connect
123
- params = ConnectionParameters.new
124
- params.set_username(@username)
125
- params.set_password(@password)
126
- params.set_virtual_host(@vhost)
127
- params.set_requested_heartbeat(0)
128
- conn_factory = ConnectionFactory.new(params)
129
- @connection = conn_factory.new_connection(@host, @port)
130
- @channel = @connection.create_channel
131
- end
132
-
133
- def disconnect
134
- @channel.close
135
- @connection.close
136
- @connection = nil
137
- end
138
-
139
- def connected?
140
- @connection != nil
141
- end
142
-
143
- def queue(name)
144
- @queues[name] ||= Queue.new(name, @channel)
145
- end
146
-
147
- def exchange(name, type='fanout')
148
- @exchanges[name] ||= Exchange.new(name, type, @channel)
149
- end
150
- end
151
-