rabbitmq-jruby-client 0.1.7 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -5,13 +5,12 @@ See more at http://www.rabbitmq.com
5
5
 
6
6
  Getting Started
7
7
  ===============
8
- 1. Make sure you can install RubyGem from GitHub (you only have to do this once): jruby -S gem sources -a http://gems.github.com
9
- 2. Install and start RabbitMQ (see below)
10
- 3. Install JRuby RabbitMQ Client: jruby -S gem install jerryluk-rabbitmq-jruby-client
8
+ 1. Install and start RabbitMQ (see below)
9
+ 2. Install JRuby RabbitMQ Client: jruby -S gem install rabbitmq-jruby-client
11
10
 
12
11
  Example Usage
13
12
  =============
14
- gem 'jerryluk-rabbitmq-jruby-client'
13
+ gem 'rabbitmq-jruby-client'
15
14
  require 'rabbitmq_client'
16
15
 
17
16
  # Initializes the new client and connect to the server
@@ -46,10 +45,7 @@ end
46
45
  Installing RabbitMQ on OS X
47
46
  ===========================
48
47
  1. Install MacPorts
49
- 2. sudo port install erlang
50
- 3. wget http://www.rabbitmq.com/releases/rabbitmq-server/v1.5.3/rabbitmq-server-generic-unix-1.5.3.tar.gz
51
- 4. tar zxvf rabbitmq-server-1.5.3.tar.gz
52
- 5. sudo mv rabbitmq_server-1.5.3 /opt/local/lib/erlang/lib
48
+ 2. sudo port install rabbitmq-server
53
49
 
54
50
  To run RabbitMQ
55
- 6. sudo /opt/local/lib/erlang/lib/rabbitmq_server-1.5.3/sbin/rabbitmq-server
51
+ 3. sudo rabbitmq-server
Binary file
@@ -45,13 +45,17 @@ class RabbitMQClient
45
45
  end
46
46
 
47
47
  def bind(exchange, routing_key='')
48
+ raise RabbitMQClientError, "queue and exchange has different durable property" unless @durable == exchange.durable
48
49
  @routing_key = routing_key
49
50
  @exchange = exchange
50
- raise RabbitMQClientError, "queue and exchange has different durable property" unless @durable == exchange.durable
51
51
  @channel.queue_bind(@name, @exchange.name, @routing_key)
52
52
  self
53
53
  end
54
54
 
55
+ def unbind
56
+ @channel.queue_unbind(@name, @exchange.name, @routing_key) if @exchange
57
+ end
58
+
55
59
  # Set props for different type of message. Currently they are:
56
60
  # RabbitMQClient::MessageProperties::MINIMAL_BASIC
57
61
  # RabbitMQClient::MessageProperties::MINIMAL_PERSISTENT_BASIC
@@ -106,6 +110,14 @@ class RabbitMQClient
106
110
  end
107
111
  end
108
112
 
113
+ def purge
114
+ @channel.queue_purge(@name)
115
+ end
116
+
117
+ def delete
118
+ @channel.queue_delete(@name)
119
+ end
120
+
109
121
  protected
110
122
  def auto_bind
111
123
  unless @exchange
@@ -124,7 +136,8 @@ class RabbitMQClient
124
136
  @type = type
125
137
  @durable = durable
126
138
  @channel = channel
127
- @channel.exchange_declare(@name, type.to_s, durable)
139
+ # Declare a non-passive, auto-delete exchange
140
+ @channel.exchange_declare(@name, type.to_s, false, durable, true, nil)
128
141
  self
129
142
  end
130
143
  end
@@ -169,6 +182,7 @@ class RabbitMQClient
169
182
  end
170
183
 
171
184
  def disconnect
185
+ @queues.values.each { |q| q.unbind }
172
186
  @channel.close
173
187
  @connection.close
174
188
  @connection = nil
@@ -24,21 +24,32 @@ describe RabbitMQClient do
24
24
  exchange.should_not be_nil
25
25
  end
26
26
 
27
+ # Commented out because it does not return in RSpec
28
+ # it "should be able to delete the queue" do
29
+ # client = RabbitMQClient.new
30
+ # queue = client.queue('test_queue')
31
+ # exchange = client.exchange('test_exchange', 'direct')
32
+ # queue.delete
33
+ # lambda {
34
+ # queue.publish('Hello World')
35
+ # }.should raise_error
36
+ # end
37
+
27
38
  describe Queue, "Basic non-persistent queue" do
28
39
  before(:each) do
29
40
  @queue = @client.queue('test_queue')
30
41
  @exchange = @client.exchange('test_exchange', 'direct')
31
42
  end
32
43
 
33
- it "should able to create a queue" do
44
+ it "should be able to create a queue" do
34
45
  @queue.should_not be_nil
35
46
  end
36
47
 
37
- it "should able to bind to an exchange" do
48
+ it "should be able to bind to an exchange" do
38
49
  @queue.bind(@exchange).should_not be_nil
39
50
  end
40
51
 
41
- it "should able to publish and retrieve a message" do
52
+ it "should be able to publish and retrieve a message" do
42
53
  @queue.bind(@exchange)
43
54
  @queue.publish('Hello World')
44
55
  @queue.retrieve.should == 'Hello World'
@@ -46,6 +57,14 @@ describe RabbitMQClient do
46
57
  @queue.retrieve.should == '人大'
47
58
  end
48
59
 
60
+ it "should be able to purge the queue" do
61
+ @queue.publish('Hello World')
62
+ @queue.publish('Hello World')
63
+ @queue.publish('Hello World')
64
+ @queue.purge
65
+ @queue.retrieve.should == nil
66
+ end
67
+
49
68
  it "should able to subscribe with a callback function" do
50
69
  a = 0
51
70
  @queue.bind(@exchange)
@@ -58,7 +77,7 @@ describe RabbitMQClient do
58
77
  a.should == 3
59
78
  end
60
79
 
61
- it "should able to subscribe to a queue using loop_subscribe" do
80
+ it "should be able to subscribe to a queue using loop_subscribe" do
62
81
  a = 0
63
82
  @queue.bind(@exchange)
64
83
  Thread.new do
@@ -96,21 +115,21 @@ describe RabbitMQClient do
96
115
  @exchange = @client.exchange('test_durable_exchange', 'fanout', true)
97
116
  end
98
117
 
99
- it "should able to create a queue" do
118
+ it "should be able to create a queue" do
100
119
  @queue.should_not be_nil
101
120
  end
102
121
 
103
- it "should able to bind to an exchange" do
122
+ it "should be able to bind to an exchange" do
104
123
  @queue.bind(@exchange).should_not be_nil
105
124
  end
106
125
 
107
- it "should able to publish and retrieve a message" do
126
+ it "should be able to publish and retrieve a message" do
108
127
  @queue.bind(@exchange)
109
128
  @queue.persistent_publish('Hello World')
110
129
  @queue.retrieve.should == 'Hello World'
111
130
  end
112
131
 
113
- it "should able to subscribe with a callback function" do
132
+ it "should be able to subscribe with a callback function" do
114
133
  a = 0
115
134
  @queue.bind(@exchange)
116
135
  @queue.subscribe do |v|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbitmq-jruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry Luk