-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #7 from VictorGaiva/feat/3-13-support
RabbitMQ 3.11 Support
- Loading branch information
Showing
66 changed files
with
4,867 additions
and
2,663 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,22 +9,23 @@ on: | |
- "mix.exs" | ||
- "mix.lock" | ||
- "test/**" | ||
- ".github/workflows/ci.yaml" | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- "lib/**" | ||
- "mix.exs" | ||
- "mix.lock" | ||
- ".github/workflows/ci.yaml" | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
services: | ||
rabbitmq: | ||
image: rabbitmq:3.11 | ||
ports: | ||
- 5552:5552 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
version: ["3_13", "3_12", "3_11"] | ||
steps: | ||
- uses: erlef/setup-beam@v1 | ||
with: | ||
|
@@ -33,10 +34,17 @@ jobs: | |
|
||
- uses: actions/checkout@v3 | ||
|
||
- name: Enable rabbitmq management plugin | ||
run: | | ||
DOCKER_NAME=$(docker ps --filter ancestor=rabbitmq:3.11 --format "{{.Names}}") | ||
docker exec $DOCKER_NAME rabbitmq-plugins enable rabbitmq_stream | ||
- uses: isbang/[email protected] | ||
with: | ||
compose-file: "./services/docker-compose.yaml" | ||
services: "rabbitmq_stream_${{ matrix.version }}" | ||
|
||
- name: Wait RabbitMQ is Up | ||
run: sleep 10s | ||
shell: bash | ||
|
||
- name: Create 'invoices' SuperStream | ||
run: docker exec rabbitmq_stream rabbitmq-streams add_super_stream invoices --partitions 3 | ||
|
||
- name: Install Dependencies | ||
run: | | ||
|
@@ -50,4 +58,4 @@ jobs: | |
run: mix compile | ||
|
||
- name: Run tests | ||
run: mix test | ||
run: mix test --exclude test --include v${{ matrix.version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,74 @@ | ||
# Changelog | ||
|
||
## 0.1.0 | ||
## 0.4.0 | ||
|
||
Initial release with the following features: | ||
Added support for RabbitMQ 3.13, with Route, Partitions and SuperStreams support. | ||
|
||
- Opening connection to RabbitMQ server | ||
- Declaring a Stream | ||
- Creating a Stream Publisher | ||
- Subscribing to Stream Messages | ||
- Initial Hex Release | ||
### 0.4.0 Features | ||
|
||
## 0.2.0 | ||
- Support for `:consumerupdate`, `:exchangecommandversions`, `:streamstats`, commands. | ||
- Serialization options for encoding and decoding messages. | ||
- TLS Support | ||
- Functional `single-active-consumer`. | ||
- Initial support for `filter_value` consumer parameter, and `:createsuperstream`, `:deletesuperstream`, `:route`, `:partitions` commands. | ||
- Initial support for SuperStreams, with RabbitMQStream.SuperConsumer and RabbitMQStream.SuperPublisher. | ||
|
||
The main objective of this release is to remove the manually added code from `rabbitmq_stream_common`'s Erlang implementation of Encoding and Decoding logic, with frame buffering. | ||
### 0.4.0 Changes | ||
|
||
## 0.2.1 | ||
The 'Message' module tree was refactored to make all the Encoding and Decoding logic stay close to each other. | ||
|
||
Documentation and Configuration refactoring | ||
- Improved the cleanup logic for closing the connection. | ||
- Publishers and Consumers now expects any name of a GenServer process, instead of a Module. | ||
- Added checks on supported commands based on Server version, and exchanged commands versions. | ||
|
||
- It is now possible to define the connection and subscriber parameters throught the `config.exs` file | ||
- Documentation improvements, and examples | ||
### 0.4.0 Breaking Changes | ||
|
||
- Renamed `RabbitMQStream.Subscriber` to `RabbitMQStream.Consumer` | ||
- Renamed `RabbitMQStream.Publisher` to `RabbitMQStream.Producer` | ||
|
||
## 0.3.0 | ||
|
||
Added an implementation for a stream Subscriber, fixed bugs and improved the documentation. | ||
Added an implementation for a stream Consumer, fixed bugs and improved the documentation. | ||
|
||
### Features | ||
### 0.3.0 Features | ||
|
||
- Added the `:credit` command. | ||
- Added `RabbitMQStream.Subscriber`, which subscribes to a stream, while tracking its offset and credit based on customizeable strategies. | ||
- Added the possibility of globally configuring the default Connection for Publishers and Subscribers | ||
|
||
### Bug Fixes | ||
### 0.3.0 Bug Fixes | ||
|
||
- Fixed an issue where tcp packages with multiple commands where not being correctly parsed, and in reversed order | ||
|
||
### Changes | ||
### 0.3.0 Changes | ||
|
||
- `RabbitMQStream.Publisher` no longer calls `connect` on the Connection during its setup. | ||
- Moved `RabbitMQStream.Publisher`'s setup logic into `handle_continue`, to prevent locking up the application startup. | ||
- `RabbitMQStream.Publisher` no longer declares the stream if it doesn't exists. | ||
- `RabbitMQStream.Publisher` module now can optionally declare a `before_start/2` callback, which is called before it calls `declare_publisher/2`, and can be used to create the stream if it doesn't exists. | ||
- `RabbitMQStream.Connection` now buffers the requests while the connection is not yet `:open`. | ||
|
||
### Breaking Changes | ||
### 0.3.0 Breaking Changes | ||
|
||
- Subscription deliver messages are now in the format `{:chunk, %RabbitMQ.OsirisChunk{}}`. | ||
|
||
## 0.2.1 | ||
|
||
Documentation and Configuration refactoring | ||
|
||
- It is now possible to define the connection and subscriber parameters throught the `config.exs` file | ||
- Documentation improvements, and examples | ||
|
||
## 0.2.0 | ||
|
||
The main objective of this release is to remove the manually added code from `rabbitmq_stream_common`'s Erlang implementation of Encoding and Decoding logic, with frame buffering. | ||
|
||
## 0.1.0 | ||
|
||
Initial release with the following features: | ||
|
||
- Opening connection to RabbitMQ server | ||
- Declaring a Stream | ||
- Creating a Stream Publisher | ||
- Subscribing to Stream Messages | ||
- Initial Hex Release |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,34 @@ | ||
# Support Table | ||
|
||
| Command | Supported? | | ||
|-------------------------|------------| | ||
| declarepublisher | ✔️ | | ||
| publish | ✔️ | | ||
| publishconfirm | ✔️ | | ||
| publisherror | ✔️ | | ||
| querypublishersequence | ✔️ | | ||
| deletepublisher | ✔️ | | ||
| subscribe | ✔️ | | ||
| deliver | ✔️ | | ||
| credit | ✔️ | | ||
| storeoffset | ✔️ | | ||
| queryoffset | ✔️ | | ||
| unsubscribe | ✔️ | | ||
| create | ✔️ | | ||
| delete | ✔️ | | ||
| metadata | ✔️ | | ||
| metadataupdate | ✔️ | | ||
| peerproperties | ✔️ | | ||
| saslhandshake | ✔️ | | ||
| saslauthenticate | ✔️ | | ||
| tune | ✔️ | | ||
| open | ✔️ | | ||
| close | ✔️ | | ||
| heartbeat | ✔️ | | ||
| route | ❌ | | ||
| partitions | ❌ | | ||
| consumerupdate | ❌ | | ||
| exchangecommandversions | ❌ | | ||
| streamstats | ❌ | | ||
| createsuperstream | ❌ | | ||
| deletesuperstream | ❌ | | ||
| Command | Supported? | Minimal version | | ||
|-------------------------|------------|-----------------| | ||
| declarepublisher | ✔️ | 3.9 | | ||
| publish | ✔️ | 3.9 | | ||
| publishconfirm | ✔️ | 3.9 | | ||
| publisherror | ✔️ | 3.9 | | ||
| querypublishersequence | ✔️ | 3.9 | | ||
| deletepublisher | ✔️ | 3.9 | | ||
| subscribe | ✔️ | 3.9 | | ||
| deliver | ✔️ | 3.9 | | ||
| credit | ✔️ | 3.9 | | ||
| storeoffset | ✔️ | 3.9 | | ||
| queryoffset | ✔️ | 3.9 | | ||
| unsubscribe | ✔️ | 3.9 | | ||
| create | ✔️ | 3.9 | | ||
| delete | ✔️ | 3.9 | | ||
| metadata | ✔️ | 3.9 | | ||
| metadataupdate | ✔️ | 3.9 | | ||
| peerproperties | ✔️ | 3.9 | | ||
| saslhandshake | ✔️ | 3.9 | | ||
| saslauthenticate | ✔️ | 3.9 | | ||
| tune | ✔️ | 3.9 | | ||
| open | ✔️ | 3.9 | | ||
| close | ✔️ | 3.9 | | ||
| heartbeat | ✔️ | 3.9 | | ||
| consumerupdate | ✔️ | 3.11 | | ||
| streamstats | ✔️ | 3.11 | | ||
| exchangecommandversions | ✔️ | 3.13 | | ||
| createsuperstream | ✔️ | 3.13 | | ||
| deletesuperstream | ✔️ | 3.13 | | ||
| route | ✔️ | 3.13 | | ||
| partitions | ✔️ | 3.13 | |
Oops, something went wrong.