bunny 1.0.7 → 2.24.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 +5 -5
- data/README.md +92 -87
- data/lib/amq/protocol/extensions.rb +2 -0
- data/lib/bunny/authentication/credentials_encoder.rb +2 -0
- data/lib/bunny/authentication/external_mechanism_encoder.rb +2 -0
- data/lib/bunny/authentication/plain_mechanism_encoder.rb +2 -0
- data/lib/bunny/channel.rb +485 -186
- data/lib/bunny/channel_id_allocator.rb +8 -4
- data/lib/bunny/concurrent/atomic_fixnum.rb +2 -0
- data/lib/bunny/concurrent/condition.rb +2 -0
- data/lib/bunny/concurrent/continuation_queue.rb +37 -13
- data/lib/bunny/concurrent/synchronized_sorted_set.rb +2 -0
- data/lib/bunny/consumer.rb +20 -13
- data/lib/bunny/consumer_tag_generator.rb +6 -2
- data/lib/bunny/consumer_work_pool.rb +37 -7
- data/lib/bunny/cruby/socket.rb +51 -22
- data/lib/bunny/cruby/ssl_socket.rb +68 -5
- data/lib/bunny/delivery_info.rb +3 -1
- data/lib/bunny/exceptions.rb +27 -4
- data/lib/bunny/exchange.rb +35 -29
- data/lib/bunny/framing.rb +2 -0
- data/lib/bunny/get_response.rb +85 -0
- data/lib/bunny/heartbeat_sender.rb +9 -6
- data/lib/bunny/message_properties.rb +2 -0
- data/lib/bunny/queue.rb +89 -41
- data/lib/bunny/reader_loop.rb +72 -28
- data/lib/bunny/return_info.rb +2 -0
- data/lib/bunny/session.rb +621 -225
- data/lib/bunny/socket.rb +7 -12
- data/lib/bunny/ssl_socket.rb +7 -12
- data/lib/bunny/test_kit.rb +15 -0
- data/lib/bunny/timeout.rb +3 -12
- data/lib/bunny/timestamp.rb +24 -0
- data/lib/bunny/transport.rb +223 -98
- data/lib/bunny/version.rb +2 -1
- data/lib/bunny/versioned_delivery_tag.rb +2 -0
- data/lib/bunny.rb +54 -8
- metadata +38 -224
- data/.gitignore +0 -22
- data/.rspec +0 -3
- data/.ruby-version +0 -1
- data/.travis.yml +0 -23
- data/.yardopts +0 -8
- data/ChangeLog.md +0 -1092
- data/Gemfile +0 -54
- data/LICENSE +0 -21
- data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
- data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
- data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
- data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
- data/benchmarks/channel_open.rb +0 -28
- data/benchmarks/mutex_and_monitor.rb +0 -42
- data/benchmarks/queue_declare.rb +0 -29
- data/benchmarks/queue_declare_and_bind.rb +0 -29
- data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
- data/benchmarks/synchronized_sorted_set.rb +0 -53
- data/benchmarks/write_vs_write_nonblock.rb +0 -49
- data/bin/ci/before_build.sh +0 -31
- data/bunny.gemspec +0 -40
- data/examples/connection/authentication_failure.rb +0 -16
- data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
- data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
- data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
- data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
- data/examples/connection/channel_level_exception.rb +0 -35
- data/examples/connection/disabled_automatic_recovery.rb +0 -34
- data/examples/connection/heartbeat.rb +0 -17
- data/examples/connection/manually_reconnecting_consumer.rb +0 -23
- data/examples/connection/manually_reconnecting_publisher.rb +0 -28
- data/examples/connection/unknown_host.rb +0 -16
- data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
- data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
- data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
- data/examples/guides/exchanges/mandatory_messages.rb +0 -30
- data/examples/guides/extensions/alternate_exchange.rb +0 -28
- data/examples/guides/extensions/basic_nack.rb +0 -33
- data/examples/guides/extensions/connection_blocked.rb +0 -35
- data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
- data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
- data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
- data/examples/guides/extensions/per_message_ttl.rb +0 -36
- data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
- data/examples/guides/extensions/publisher_confirms.rb +0 -28
- data/examples/guides/extensions/queue_lease.rb +0 -26
- data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
- data/examples/guides/getting_started/blabbr.rb +0 -27
- data/examples/guides/getting_started/hello_world.rb +0 -20
- data/examples/guides/getting_started/weathr.rb +0 -47
- data/examples/guides/queues/one_off_consumer.rb +0 -23
- data/examples/guides/queues/redeliveries.rb +0 -79
- data/lib/bunny/compatibility.rb +0 -24
- data/lib/bunny/concurrent/linked_continuation_queue.rb +0 -61
- data/lib/bunny/jruby/socket.rb +0 -40
- data/lib/bunny/jruby/ssl_socket.rb +0 -53
- data/lib/bunny/system_timer.rb +0 -20
- data/profiling/basic_publish/with_4K_messages.rb +0 -33
- data/repl +0 -3
- data/spec/compatibility/queue_declare_spec.rb +0 -44
- data/spec/compatibility/queue_declare_with_default_channel_spec.rb +0 -33
- data/spec/higher_level_api/integration/basic_ack_spec.rb +0 -71
- data/spec/higher_level_api/integration/basic_cancel_spec.rb +0 -76
- data/spec/higher_level_api/integration/basic_consume_spec.rb +0 -225
- data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +0 -54
- data/spec/higher_level_api/integration/basic_get_spec.rb +0 -48
- data/spec/higher_level_api/integration/basic_nack_spec.rb +0 -79
- data/spec/higher_level_api/integration/basic_publish_spec.rb +0 -89
- data/spec/higher_level_api/integration/basic_qos_spec.rb +0 -29
- data/spec/higher_level_api/integration/basic_recover_spec.rb +0 -18
- data/spec/higher_level_api/integration/basic_reject_spec.rb +0 -74
- data/spec/higher_level_api/integration/basic_return_spec.rb +0 -33
- data/spec/higher_level_api/integration/channel_close_spec.rb +0 -25
- data/spec/higher_level_api/integration/channel_flow_spec.rb +0 -21
- data/spec/higher_level_api/integration/channel_open_spec.rb +0 -57
- data/spec/higher_level_api/integration/confirm_select_spec.rb +0 -19
- data/spec/higher_level_api/integration/connection_spec.rb +0 -400
- data/spec/higher_level_api/integration/connection_stop_spec.rb +0 -26
- data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +0 -50
- data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +0 -128
- data/spec/higher_level_api/integration/dead_lettering_spec.rb +0 -52
- data/spec/higher_level_api/integration/exchange_bind_spec.rb +0 -31
- data/spec/higher_level_api/integration/exchange_declare_spec.rb +0 -204
- data/spec/higher_level_api/integration/exchange_delete_spec.rb +0 -105
- data/spec/higher_level_api/integration/exchange_unbind_spec.rb +0 -40
- data/spec/higher_level_api/integration/exclusive_queue_spec.rb +0 -28
- data/spec/higher_level_api/integration/heartbeat_spec.rb +0 -31
- data/spec/higher_level_api/integration/merry_go_round_spec.rb +0 -85
- data/spec/higher_level_api/integration/message_properties_access_spec.rb +0 -95
- data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +0 -24
- data/spec/higher_level_api/integration/publisher_confirms_spec.rb +0 -77
- data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +0 -65
- data/spec/higher_level_api/integration/queue_bind_spec.rb +0 -109
- data/spec/higher_level_api/integration/queue_declare_spec.rb +0 -190
- data/spec/higher_level_api/integration/queue_delete_spec.rb +0 -41
- data/spec/higher_level_api/integration/queue_purge_spec.rb +0 -30
- data/spec/higher_level_api/integration/queue_unbind_spec.rb +0 -54
- data/spec/higher_level_api/integration/read_only_consumer_spec.rb +0 -60
- data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +0 -36
- data/spec/higher_level_api/integration/tls_connection_spec.rb +0 -127
- data/spec/higher_level_api/integration/tx_commit_spec.rb +0 -21
- data/spec/higher_level_api/integration/tx_rollback_spec.rb +0 -21
- data/spec/higher_level_api/integration/with_channel_spec.rb +0 -25
- data/spec/issues/issue100_spec.rb +0 -42
- data/spec/issues/issue141_spec.rb +0 -44
- data/spec/issues/issue78_spec.rb +0 -75
- data/spec/issues/issue83_spec.rb +0 -31
- data/spec/issues/issue97_attachment.json +0 -1
- data/spec/issues/issue97_spec.rb +0 -176
- data/spec/lower_level_api/integration/basic_cancel_spec.rb +0 -69
- data/spec/lower_level_api/integration/basic_consume_spec.rb +0 -100
- data/spec/spec_helper.rb +0 -64
- data/spec/stress/channel_open_stress_spec.rb +0 -51
- data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +0 -28
- data/spec/stress/concurrent_consumers_stress_spec.rb +0 -69
- data/spec/stress/concurrent_publishers_stress_spec.rb +0 -57
- data/spec/stress/connection_open_close_spec.rb +0 -40
- data/spec/stress/long_running_consumer_spec.rb +0 -83
- data/spec/tls/cacert.pem +0 -18
- data/spec/tls/client_cert.pem +0 -18
- data/spec/tls/client_key.pem +0 -27
- data/spec/tls/server_cert.pem +0 -18
- data/spec/tls/server_key.pem +0 -27
- data/spec/unit/bunny_spec.rb +0 -15
- data/spec/unit/concurrent/atomic_fixnum_spec.rb +0 -35
- data/spec/unit/concurrent/condition_spec.rb +0 -82
- data/spec/unit/concurrent/linked_continuation_queue_spec.rb +0 -35
- data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +0 -73
- data/spec/unit/system_timer_spec.rb +0 -10
- data/spec/unit/version_delivery_tag_spec.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 20682c9d4288b25e0aec7dcf5ad54276c7494faa45da1101eeedafa4f0f52abf
|
4
|
+
data.tar.gz: e88c87ecce0902f284a2bf54540c322afd3ac4c1fa625fb109d08d325a4faafa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c5668062269ae3be5c160a410432e712b110fc30f9fb6ddcde0c6ce14ddccc5c60e2c298eb21ce4a0512b4564f20833e4556e3d4532fd26918b674b4163ccb7
|
7
|
+
data.tar.gz: e621b5fd31913bf21d48380f0f8e198075f74e7bcec9c97feb17f32ae206b28551b87dd52c83640e72465afce98e12e5e611db940561ea9edbd3ef281f97169e
|
data/README.md
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
# Bunny, a Ruby RabbitMQ Client
|
2
2
|
|
3
|
-
Bunny is a
|
4
|
-
is feature complete, supports all RabbitMQ
|
3
|
+
Bunny is a RabbitMQ client that focuses on ease of use. It
|
4
|
+
is feature complete, supports all recent RabbitMQ features and does not
|
5
5
|
have any heavyweight dependencies.
|
6
6
|
|
7
7
|
|
8
8
|
## I Know What RabbitMQ and Bunny are, How Do I Get Started?
|
9
9
|
|
10
|
-
[Right here](
|
10
|
+
[Right here](https://www.rabbitmq.com/getstarted.html)!
|
11
11
|
|
12
12
|
|
13
13
|
## What is Bunny Good For?
|
14
14
|
|
15
|
-
One can use
|
16
|
-
applications (both Ruby and not). Complexity and size may vary from
|
15
|
+
One can use Bunny to make Ruby applications interoperate with other
|
16
|
+
applications (both built in Ruby and not). Complexity and size may vary from
|
17
17
|
simple work queues to complex multi-stage data processing workflows that involve
|
18
18
|
many applications built with all kinds of technologies.
|
19
19
|
|
@@ -43,56 +43,59 @@ Specific examples:
|
|
43
43
|
Web applications that display that information in the real time.
|
44
44
|
|
45
45
|
|
46
|
-
|
47
46
|
## Supported Ruby Versions
|
48
47
|
|
49
|
-
Bunny
|
48
|
+
Modern Bunny versions support
|
50
49
|
|
51
|
-
* CRuby
|
52
|
-
*
|
53
|
-
* Rubinius 2.0+
|
50
|
+
* CRuby 3.2 through 3.4 (inclusive)
|
51
|
+
* [TruffleRuby](https://www.graalvm.org/ruby/)
|
54
52
|
|
53
|
+
For environments that use TLS, Bunny expects Ruby installations to use a recent enough OpenSSL version that
|
54
|
+
**includes support for [TLS 1.3](https://www.rabbitmq.com/docs/ssl#tls1.3)**.
|
55
55
|
|
56
|
-
|
56
|
+
### JRuby
|
57
57
|
|
58
|
-
Bunny
|
59
|
-
Bunny `0.7.x` and earlier versions support RabbitMQ 1.x and 2.x.
|
58
|
+
Bunny no longer supports JRuby.
|
60
59
|
|
60
|
+
JRuby users should use [March Hare](http://rubymarchhare.info), which has a similar API
|
61
|
+
and is built on top of the RabbitMQ Java client specifically for JRuby.
|
61
62
|
|
62
|
-
## Project Maturity
|
63
63
|
|
64
|
-
|
65
|
-
a stable public API.
|
64
|
+
## Supported RabbitMQ Versions
|
66
65
|
|
67
|
-
|
68
|
-
0.9 can be considered to be "second birthday" for Bunny as it was
|
69
|
-
rewritten from scratch with over a dozen of preview releases over the
|
70
|
-
course of about a year.
|
66
|
+
Modern Bunny releases target [currently community supported RabbitMQ release series](https://www.rabbitmq.com/release-information).
|
71
67
|
|
72
|
-
|
73
|
-
|
68
|
+
The protocol implemented by Bunny was first introduced in RabbitMQ 2.0 and has evolved
|
69
|
+
via extensions and with next to no breaking changes, so all key Bunny operations can be used with a wide range
|
70
|
+
of RabbitMQ versions, accounting for the few potentially breaking changes they
|
71
|
+
may introduce, e.g. the idempotency of `queue.delete` operations.
|
74
72
|
|
75
73
|
|
76
|
-
##
|
74
|
+
## Change Log
|
77
75
|
|
78
|
-
|
76
|
+
[Change log](https://github.com/ruby-amqp/bunny/blob/main/ChangeLog.md).
|
79
77
|
|
80
|
-
[](http://badge.fury.io/rb/bunny)
|
81
78
|
|
82
|
-
|
79
|
+
## Installation & Bundler Dependency
|
83
80
|
|
84
|
-
|
81
|
+
### Most Recent Release
|
85
82
|
|
86
|
-
|
87
|
-
gem install bunny
|
88
|
-
```
|
83
|
+
[](http://badge.fury.io/rb/bunny)
|
89
84
|
|
90
85
|
### Bundler Dependency
|
91
86
|
|
92
87
|
To use Bunny in a project managed with Bundler:
|
93
88
|
|
94
89
|
``` ruby
|
95
|
-
gem "bunny", ">=
|
90
|
+
gem "bunny", ">= 2.23.0"
|
91
|
+
```
|
92
|
+
|
93
|
+
### With Rubygems
|
94
|
+
|
95
|
+
To install Bunny with RubyGems:
|
96
|
+
|
97
|
+
```
|
98
|
+
gem install bunny
|
96
99
|
```
|
97
100
|
|
98
101
|
|
@@ -101,7 +104,7 @@ gem "bunny", ">= 1.0.0.rc2"
|
|
101
104
|
Below is a small snippet that demonstrates how to publish
|
102
105
|
and synchronously consume ("pull API") messages with Bunny.
|
103
106
|
|
104
|
-
For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](
|
107
|
+
For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](https://www.rabbitmq.com/tutorials/tutorial-one-ruby.html).
|
105
108
|
|
106
109
|
``` ruby
|
107
110
|
require "bunny"
|
@@ -112,20 +115,31 @@ conn.start
|
|
112
115
|
|
113
116
|
# open a channel
|
114
117
|
ch = conn.create_channel
|
118
|
+
ch.confirm_select
|
115
119
|
|
116
120
|
# declare a queue
|
117
121
|
q = ch.queue("test1")
|
122
|
+
q.subscribe(manual_ack: true) do |delivery_info, metadata, payload|
|
123
|
+
puts "This is the message: #{payload}"
|
124
|
+
# acknowledge the delivery so that RabbitMQ can mark it for deletion
|
125
|
+
ch.ack(delivery_info.delivery_tag)
|
126
|
+
end
|
118
127
|
|
119
128
|
# publish a message to the default exchange which then gets routed to this queue
|
120
129
|
q.publish("Hello, everybody!")
|
121
130
|
|
122
|
-
#
|
123
|
-
|
131
|
+
# await confirmations from RabbitMQ, see
|
132
|
+
# https://www.rabbitmq.com/publishers.html#data-safety for details
|
133
|
+
ch.wait_for_confirms
|
124
134
|
|
125
|
-
|
135
|
+
# give the above consumer some time consume the delivery and print out the message
|
136
|
+
sleep 1
|
126
137
|
|
138
|
+
puts "Done"
|
139
|
+
|
140
|
+
ch.close
|
127
141
|
# close the connection
|
128
|
-
conn.
|
142
|
+
conn.close
|
129
143
|
```
|
130
144
|
|
131
145
|
|
@@ -133,21 +147,33 @@ conn.stop
|
|
133
147
|
|
134
148
|
### Getting Started
|
135
149
|
|
136
|
-
For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](
|
150
|
+
For a 15 minute tutorial using more practical examples, see [Getting Started with RabbitMQ and Ruby using Bunny](https://github.com/ruby-amqp/bunny/blob/main/docs/guides/getting_started.md).
|
137
151
|
|
138
152
|
### Guides
|
139
153
|
|
140
|
-
|
154
|
+
Bunny documentation guides are [under `docs/guides` in this repository](https://github.com/ruby-amqp/bunny/tree/main/docs/guides):
|
141
155
|
|
142
|
-
* [Queues and Consumers](
|
143
|
-
* [Exchanges and Publishers](
|
156
|
+
* [Queues and Consumers](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/queues.md)
|
157
|
+
* [Exchanges and Publishers](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/exchanges.md)
|
144
158
|
* [AMQP 0.9.1 Model Explained](http://www.rabbitmq.com/tutorials/amqp-concepts.html)
|
145
|
-
* [Connecting to RabbitMQ](
|
146
|
-
* [Error Handling and Recovery](
|
147
|
-
* [TLS/SSL Support](
|
148
|
-
* [Bindings](
|
149
|
-
* [Using RabbitMQ Extensions with Bunny](
|
150
|
-
* [Durability and Related Matters](
|
159
|
+
* [Connecting to RabbitMQ](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/connecting.md)
|
160
|
+
* [Error Handling and Recovery](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/error_handling.md)
|
161
|
+
* [TLS/SSL Support](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/tls.md)
|
162
|
+
* [Bindings](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/bindings.md)
|
163
|
+
* [Using RabbitMQ Extensions with Bunny](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/extensions.md)
|
164
|
+
* [Durability and Related Matters](https://github.com/ruby-amqp/bunny/tree/main/docs/guides/durability.md)
|
165
|
+
|
166
|
+
Some highly relevant RabbitMQ documentation guides:
|
167
|
+
|
168
|
+
* [Connections](https://www.rabbitmq.com/docs/connections)
|
169
|
+
* [Channels](https://www.rabbitmq.com/docs/channels)
|
170
|
+
* [Queues](https://www.rabbitmq.com/docs/queues)
|
171
|
+
* [Quorum queues](https://www.rabbitmq.com/docs/quorum-queues)
|
172
|
+
* [Streams](https://rabbitmq.com/docs/streams) (Bunny can perform basic operations on streams even though it does not implement the [RabbitMQ Stream protocol](https://github.com/rabbitmq/rabbitmq-server/blob/v4.0.x/deps/rabbitmq_stream/docs/PROTOCOL.adoc))
|
173
|
+
* [Publishers](https://www.rabbitmq.com/docs/publishers)
|
174
|
+
* [Consumers](https://www.rabbitmq.com/docs/consumers)
|
175
|
+
* Data safety: publisher and consumer [Confirmations](https://www.rabbitmq.com/docs/confirms)
|
176
|
+
* [Production Checklist](https://www.rabbitmq.com/docs/production-checklist)
|
151
177
|
|
152
178
|
### API Reference
|
153
179
|
|
@@ -158,62 +184,41 @@ Other documentation guides are available at [rubybunny.info](http://rubybunny.in
|
|
158
184
|
|
159
185
|
### Mailing List
|
160
186
|
|
161
|
-
|
162
|
-
to also join the [rabbitmq-discuss](https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss) mailing list. Feel free to ask any questions that you may have.
|
163
|
-
|
187
|
+
Please use [GitHub Discussions](https://github.com/ruby-amqp/bunny/discussions) for questions.
|
164
188
|
|
165
|
-
|
189
|
+
GitHub issues should be used for specific, well understood, actionable
|
190
|
+
maintainers and contributors can work on.
|
166
191
|
|
167
|
-
|
192
|
+
We encourage you to keep an eye on [RabbitMQ Discussions](https://github.com/rabbitmq/rabbitmq-server/discussions),
|
193
|
+
join the [RabbitMQ mailing list](https://groups.google.com/forum/#!forum/rabbitmq-users)
|
194
|
+
and the [RabbitMQ Discord server](https://rabbitmq.com/discord).
|
168
195
|
|
169
196
|
|
170
|
-
###
|
171
|
-
|
172
|
-
To subscribe for announcements of releases, important changes and so on, please follow [@rubyamqp](https://twitter.com/#!/rubyamqp) on Twitter.
|
173
|
-
|
174
|
-
More detailed announcements can be found in the blogs
|
197
|
+
### Reporting Issues
|
175
198
|
|
176
|
-
|
177
|
-
|
199
|
+
If you find a bug you understand well, poor default, incorrect or unclear piece of documentation,
|
200
|
+
or missing feature, please [file an
|
201
|
+
issue](http://github.com/ruby-amqp/bunny/issues) on GitHub.
|
178
202
|
|
203
|
+
Please use [Bunny's mailing list](http://groups.google.com/group/ruby-amqp) for questions,
|
204
|
+
investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
|
205
|
+
maintainers and contributors can work on.
|
179
206
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
the API inconvenient, please [file an
|
184
|
-
issue](http://github.com/ruby-amqp/bunny/issues) on GitHub. When
|
185
|
-
filing an issue, please specify which Bunny and RabbitMQ versions you
|
186
|
-
are using, provide recent RabbitMQ log file contents if possible, and
|
187
|
-
try to explain what behavior you expected and why. Bonus points for
|
188
|
-
contributing failing test cases.
|
207
|
+
When filing an issue, please specify which Bunny and RabbitMQ versions you
|
208
|
+
are using, provide recent RabbitMQ log file contents, full exception stack traces,
|
209
|
+
and steps to reproduce (or failing test cases).
|
189
210
|
|
190
211
|
|
191
212
|
## Other Ruby RabbitMQ Clients
|
192
213
|
|
193
|
-
|
194
|
-
|
195
|
-
gem](http://rubyamqp.info). Both are mature libraries and require
|
196
|
-
RabbitMQ 2.x or 3.x.
|
214
|
+
The other widely used Ruby RabbitMQ client is [March Hare](http://rubymarchhare.info) (JRuby-only).
|
215
|
+
It's a mature library that require RabbitMQ 3.3.x or later.
|
197
216
|
|
198
217
|
|
199
218
|
## Contributing
|
200
219
|
|
201
|
-
|
202
|
-
|
203
|
-
bundle install --binstubs
|
204
|
-
|
205
|
-
then set up RabbitMQ vhosts with
|
206
|
-
|
207
|
-
./bin/ci/before_build.sh
|
208
|
-
|
209
|
-
(if needed, set `RABBITMQCTL` env variable to point to `rabbitmqctl` you want to use)
|
210
|
-
|
211
|
-
and then run tests with
|
212
|
-
|
213
|
-
CI=true ./bin/rspec -cfs spec
|
214
|
-
|
215
|
-
After that create a branch and make your changes on it. Once you are done with your changes and all tests pass, submit a pull request
|
216
|
-
on GitHub.
|
220
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for more information
|
221
|
+
about running various test suites.
|
217
222
|
|
218
223
|
|
219
224
|
## License
|