Commit Graph

40 Commits

Author SHA1 Message Date
David Ansari cdc5b886f8 Fix crash in consistent hash exchange
Prior to this commit, a crash occurred when a consistent hash exchange
got declared with a `hash-header` argument, but the publishing client
didn't set that header on the message.

This bug is present in RabbitMQ 3.13.0 - 3.13.6.

Fixes https://github.com/rabbitmq/rabbitmq-server/discussions/11671
2024-07-24 11:42:59 +02:00
Artem Bilan 8b7ba05f32
Consistent Hash doc improvement
Mention in the docs that `hash-header` and `hash-property` are mutually exclusive.
2024-07-09 10:47:02 -04:00
Loïc Hoguin 7e9cac3d00
make: Remove Travis-specific targets/config
This should no longer be used.
2024-06-24 14:12:02 +02:00
Michael Klishin 9c79ad8d55 More missed license header updates #9969 2024-02-05 12:26:25 -05:00
Michael Klishin 25f4425131 CHX: document the limitations introduced in #5121 2022-07-01 12:29:00 +04:00
dcorbacho 5d348bd3a1 Switch to Mozilla Public License 2.0 (MPL 2.0) 2020-07-11 19:45:03 +01:00
Michael Klishin a2401b39ac README updates 2020-06-13 17:28:11 +03:00
Michael Klishin 6df9370c6c Mention routing locality in the README
References #32 and specifically [1].

1. https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange/issues/32#issuecomment-643074328
2020-06-12 08:39:12 +03:00
Jean-Sébastien Pédron f73587775a Update copyright (year 2020) 2020-03-10 16:08:09 +01:00
Spring Operator f1ac305a24 URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* http://blog.listincomprehension.com/search/label/procket (200) with 1 occurrences could not be migrated:
   ([https](https://blog.listincomprehension.com/search/label/procket) result ClosedChannelException).
* http://dozzie.jarowit.net/trac/wiki/TOML (200) with 1 occurrences could not be migrated:
   ([https](https://dozzie.jarowit.net/trac/wiki/TOML) result SSLHandshakeException).
* http://dozzie.jarowit.net/trac/wiki/subproc (200) with 1 occurrences could not be migrated:
   ([https](https://dozzie.jarowit.net/trac/wiki/subproc) result SSLHandshakeException).
* http://e2project.org (200) with 1 occurrences could not be migrated:
   ([https](https://e2project.org) result AnnotatedConnectException).
* http://michaelnielsen.org/blog/consistent-hashing/ (200) with 1 occurrences could not be migrated:
   ([https](https://michaelnielsen.org/blog/consistent-hashing/) result SSLHandshakeException).
* http://nitrogenproject.com/ (200) with 2 occurrences could not be migrated:
   ([https](https://nitrogenproject.com/) result ConnectTimeoutException).
* http://proper.softlab.ntua.gr (200) with 1 occurrences could not be migrated:
   ([https](https://proper.softlab.ntua.gr) result SSLHandshakeException).
* http://rubybunny.info (200) with 1 occurrences could not be migrated:
   ([https](https://rubybunny.info) result AnnotatedConnectException).
* http://www.martinbroadhurst.com/Consistent-Hash-Ring.html (200) with 1 occurrences could not be migrated:
   ([https](https://www.martinbroadhurst.com/Consistent-Hash-Ring.html) result SSLHandshakeException).
* http://yaws.hyber.org (200) with 1 occurrences could not be migrated:
   ([https](https://yaws.hyber.org) result AnnotatedConnectException).
* http://choven.ca (503) with 1 occurrences could not be migrated:
   ([https](https://choven.ca) result ConnectTimeoutException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* http://fixprotocol.org/ (301) with 1 occurrences migrated to:
  https://fixtrading.org ([https](https://fixprotocol.org/) result SSLHandshakeException).
* http://erldb.org (UnknownHostException) with 1 occurrences migrated to:
  https://erldb.org ([https](https://erldb.org) result UnknownHostException).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* http://cloudi.org/ with 27 occurrences migrated to:
  https://cloudi.org/ ([https](https://cloudi.org/) result 200).
* http://en.wikipedia.org/wiki/Consistent_hashing with 1 occurrences migrated to:
  https://en.wikipedia.org/wiki/Consistent_hashing ([https](https://en.wikipedia.org/wiki/Consistent_hashing) result 200).
* http://erlware.org/ with 1 occurrences migrated to:
  https://erlware.org/ ([https](https://erlware.org/) result 200).
* http://inaka.github.io/cowboy-trails/ with 1 occurrences migrated to:
  https://inaka.github.io/cowboy-trails/ ([https](https://inaka.github.io/cowboy-trails/) result 200).
* http://ninenines.eu with 6 occurrences migrated to:
  https://ninenines.eu ([https](https://ninenines.eu) result 200).
* http://www.actordb.com/ with 2 occurrences migrated to:
  https://www.actordb.com/ ([https](https://www.actordb.com/) result 200).
* http://www.cs.kent.ac.uk/projects/wrangler/Home.html with 1 occurrences migrated to:
  https://www.cs.kent.ac.uk/projects/wrangler/Home.html ([https](https://www.cs.kent.ac.uk/projects/wrangler/Home.html) result 200).
* http://www.rabbitmq.com/plugins.html with 1 occurrences migrated to:
  https://www.rabbitmq.com/plugins.html ([https](https://www.rabbitmq.com/plugins.html) result 200).
* http://www.rebar3.org with 1 occurrences migrated to:
  https://www.rebar3.org ([https](https://www.rebar3.org) result 200).
* http://contributor-covenant.org with 1 occurrences migrated to:
  https://contributor-covenant.org ([https](https://contributor-covenant.org) result 301).
* http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
  https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/) result 301).
* http://inaka.github.com/apns4erl with 1 occurrences migrated to:
  https://inaka.github.com/apns4erl ([https](https://inaka.github.com/apns4erl) result 301).
* http://inaka.github.com/edis/ with 1 occurrences migrated to:
  https://inaka.github.com/edis/ ([https](https://inaka.github.com/edis/) result 301).
* http://lasp-lang.org/ with 1 occurrences migrated to:
  https://lasp-lang.org/ ([https](https://lasp-lang.org/) result 301).
* http://saleyn.github.com/erlexec with 1 occurrences migrated to:
  https://saleyn.github.com/erlexec ([https](https://saleyn.github.com/erlexec) result 301).
* http://www.mozilla.org/MPL/ with 3 occurrences migrated to:
  https://www.mozilla.org/MPL/ ([https](https://www.mozilla.org/MPL/) result 301).
* http://zhongwencool.github.io/observer_cli with 1 occurrences migrated to:
  https://zhongwencool.github.io/observer_cli ([https](https://zhongwencool.github.io/observer_cli) result 301).
2019-03-20 03:13:58 -05:00
Michael Klishin 7d4fa1c778 Link to the examples directory 2018-08-21 18:49:18 +03:00
Michael Klishin f281cb473f Minor README improvements 2018-08-21 18:41:57 +03:00
Michael Klishin 5babddcd0a README: Unify Ruby examples 2018-08-21 18:31:56 +03:00
Michael Klishin 25ae2b3fe9 A typo 2018-08-20 15:13:28 +03:00
Michael Klishin 4adfec92e8 Add Ch-squared test results to implementation details 2018-08-20 15:12:27 +03:00
Michael Klishin 7cc7b376ad More code examples in Java, minor doc edits 2018-08-20 14:10:23 +03:00
Michael Klishin 989efa604a Add a Java code example 2018-08-20 13:39:35 +03:00
Michael Klishin 9bde2bc88a More code examples, minor edits 2018-08-19 16:59:30 +03:00
Michael Klishin cb4610d29d Code examples in more languages for the header routing example 2018-08-19 16:35:53 +03:00
Michael Klishin fc1ed981f5 Provide examples in Python and Ruby
with more examples to come as time permits
2018-08-19 15:59:31 +03:00
Michael Klishin e76e1c7667 More documentation updates 2018-08-19 14:20:39 +03:00
Michael Klishin 9b5fe90736 Documentation updates 2018-08-19 14:09:00 +03:00
Michael Klishin 8c6835439c Mention rabbitmq-sharding a possible alternative 2016-08-14 07:22:45 +03:00
Michael Klishin 5f76c94416 Add a note and links discussed in #13 2016-08-14 07:19:10 +03:00
kjnilsson c3304199ac change the use of 'Probabilistic' 2016-06-20 17:38:39 +01:00
Mordy Ovits fe7318cf07 Further clarity 2016-06-20 17:38:31 +01:00
Mordy Ovits 0132ca5b18 Correct the description of hashing distribution
It's not true that "if you wish for queue A to receive twice as many messages as queue B then you bind the queue A with a binding key of twice the number [...] of the binding key of the binding to queue B."  The hashing is done on the routing keys, not the messages.  If routing key "foo" has 50,000 messages published and routing key "bar" has 1 message published, the ratio of messages received by queues A and B will not be 2:1.  In fact, all 50,001 messages might go to just one of those queues.

I've edited the langue to match the actual behavior and specifically clarified this confusion.
2016-06-20 17:38:24 +01:00
Gavin M. Roy a9bcb539b4 Add routing on message properties
Summary:

Add a new hash-property argument setting that allows for message hasing based upon the correlation_id or message_id.

Changes:

- Validate the exchange upon creation to ensure that hash-header and hash-property are not both set at the same time. Additionally validate the value of hash-property when set is one of correlation_id or message_id
- Change the signature of hash/2 for header to match on {header, Header} instead of {longstr, Header}
- Add a new hash/2 implementation that matches on {property, Value} for returning the hashable string from the message properties
- Implement a new hash_on/1 method for selecting the data the message will be routed on
- Implement a new hash_args/1 method for returning the configuration for both hash-header and hash-property
- Add test coverage for message property based routing

This addresses the proposal I outlined in #7
2015-09-02 12:33:32 -04:00
Michael Klishin bdc1541677 Add travis badge 2015-08-22 01:45:47 +03:00
Michael Klishin 12a8d9a690 Update README.md 2015-06-04 14:50:52 +03:00
Michael Klishin 3b42477e05 Update README.md 2015-03-24 21:15:56 +03:00
Michael Klishin eeaca05545 Update mailing list link 2015-03-24 21:04:46 +03:00
Jean-Sébastien Pédron f4d4bbf631 Remove the "moved to GitHub" warning. 2015-02-17 21:10:43 +01:00
Jean-Sebastien Pedron 69c6ae07cf README.md: Warn about the move to GitHub 2015-02-17 17:58:46 +01:00
Simon MacMullen 2f2f22e96c More doc 2013-01-09 14:24:58 +00:00
Simon MacMullen 1af651f92f Typo 2013-01-09 11:11:51 +00:00
Simon MacMullen 0c27693353 Derp, use arguments rather than environment. And add a touch of documentation. 2013-01-09 11:10:05 +00:00
Matthew Sackman 600567148a Minor improvements to documentation; additional comment in code now that I've given up with my finger-tree implementation to 'solve' the identified problem. 2011-10-18 15:36:28 +01:00
Matthew Sackman bf08828cce Improve documentation 2011-09-24 19:39:28 +01:00
Matthew Sackman e0ef2de300 Initial check-in 2011-09-24 19:21:18 +01:00