diff --git a/.github/workflows/publish-snapshot.yml b/.github/workflows/publish-snapshot.yml
new file mode 100644
index 0000000000..2b6e5be866
--- /dev/null
+++ b/.github/workflows/publish-snapshot.yml
@@ -0,0 +1,33 @@
+name: Publish snapshot
+
+on: workflow_dispatch
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+ cache: 'maven'
+ server-id: ossrh
+ server-username: MAVEN_USERNAME
+ server-password: MAVEN_PASSWORD
+ gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
+ gpg-passphrase: MAVEN_GPG_PASSPHRASE
+ - name: Get dependencies
+ run: make deps
+ - name: Publish snapshot
+ run: ./mvnw clean deploy -Psnapshots -DskipITs -DskipTests --no-transfer-progress
+ env:
+ MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
+ MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
+ MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
\ No newline at end of file
diff --git a/.github/workflows/test-3.11-alpha.yml b/.github/workflows/test-3.11-alpha.yml
new file mode 100644
index 0000000000..28ab3e31f6
--- /dev/null
+++ b/.github/workflows/test-3.11-alpha.yml
@@ -0,0 +1,58 @@
+name: Test against RabbitMQ 3.11 alpha
+
+on:
+ schedule:
+ - cron: '0 4 * * *'
+ pull_request:
+ branches:
+ - 5.16.x-stable
+ push:
+ branches:
+ - 5.16.x-stable
+ workflow_dispatch:
+
+env:
+ RABBITMQ_IMAGE_TAG: 3.11
+ RABBITMQ_IMAGE: pivotalrabbitmq/rabbitmq-dev
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Checkout tls-gen
+ uses: actions/checkout@v3
+ with:
+ repository: rabbitmq/tls-gen
+ path: './tls-gen'
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+ cache: 'maven'
+ - name: Start broker
+ run: ci/start-broker.sh
+ - name: Get dependencies
+ run: make deps
+ - name: Test with NIO
+ run: |
+ ./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
+ -Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
+ -Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
+ -Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
+ --no-transfer-progress
+ - name: Test with blocking IO
+ run: |
+ ./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
+ -Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
+ -Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
+ -Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
+ --no-transfer-progress
+ - name: Stop broker
+ run: docker stop rabbitmq && docker rm rabbitmq
\ No newline at end of file
diff --git a/.github/workflows/test-3.11-stable.yml b/.github/workflows/test-3.11-stable.yml
new file mode 100644
index 0000000000..8b442d3380
--- /dev/null
+++ b/.github/workflows/test-3.11-stable.yml
@@ -0,0 +1,68 @@
+name: Test against RabbitMQ 3.11 stable
+
+on:
+ pull_request:
+ branches:
+ - 5.16.x-stable
+ push:
+ branches:
+ - 5.16.x-stable
+ workflow_dispatch:
+
+env:
+ RABBITMQ_IMAGE_TAG: 3.11
+ RABBITMQ_IMAGE: rabbitmq
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Checkout tls-gen
+ uses: actions/checkout@v3
+ with:
+ repository: rabbitmq/tls-gen
+ path: './tls-gen'
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+ cache: 'maven'
+ server-id: ossrh
+ server-username: MAVEN_USERNAME
+ server-password: MAVEN_PASSWORD
+ gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
+ gpg-passphrase: MAVEN_GPG_PASSPHRASE
+ - name: Start broker
+ run: ci/start-broker.sh
+ - name: Get dependencies
+ run: make deps
+ - name: Test with NIO
+ run: |
+ ./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
+ -Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
+ -Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
+ -Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
+ --no-transfer-progress
+ - name: Test with blocking IO
+ run: |
+ ./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
+ -Dtest-broker.A.nodename=rabbit@$(hostname) -Dmaven.javadoc.skip=true \
+ -Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
+ -Dit.test=ClientTests,FunctionalTests,ServerTests,SSLTests \
+ --no-transfer-progress
+ - name: Stop broker
+ run: docker stop rabbitmq && docker rm rabbitmq
+ - name: Publish snapshot
+ if: ${{ github.event_name != 'pull_request' }}
+ run: ./mvnw clean deploy -Psnapshots -DskipITs -DskipTests --no-transfer-progress
+ env:
+ MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
+ MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
+ MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000000..455941b201
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,66 @@
+name: Test against RabbitMQ 3.12 stable
+
+on:
+ pull_request:
+ branches:
+ - 5.16.x-stable
+ push:
+ branches:
+ - 5.16.x-stable
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Checkout tls-gen
+ uses: actions/checkout@v3
+ with:
+ repository: rabbitmq/tls-gen
+ path: './tls-gen'
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.x'
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+ cache: 'maven'
+ server-id: ossrh
+ server-username: MAVEN_USERNAME
+ server-password: MAVEN_PASSWORD
+ gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
+ gpg-passphrase: MAVEN_GPG_PASSPHRASE
+ - name: Start cluster
+ run: ci/start-cluster.sh
+ - name: Get dependencies
+ run: make deps
+ - name: Test with NIO
+ run: |
+ ./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
+ -Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
+ -Dmaven.javadoc.skip=true \
+ -Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
+ --no-transfer-progress
+ - name: Test with blocking IO
+ run: |
+ ./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
+ -Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
+ -Dmaven.javadoc.skip=true \
+ -Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
+ --no-transfer-progress
+ - name: Stop broker A
+ run: docker stop rabbitmq && docker rm rabbitmq
+ - name: Stop broker B
+ run: docker stop hare && docker rm hare
+ - name: Publish snapshot
+ if: ${{ github.event_name != 'pull_request' }}
+ run: ./mvnw clean deploy -Psnapshots -DskipITs -DskipTests --no-transfer-progress
+ env:
+ MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
+ MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
+ MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
diff --git a/.mvn/maven.config b/.mvn/maven.config
new file mode 100644
index 0000000000..f373d1de10
--- /dev/null
+++ b/.mvn/maven.config
@@ -0,0 +1 @@
+-Dmaven.wagon.http.retryHandler.count=10
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 642d572ce9..a9f1ef87bb 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,2 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/ci/evaluate-release.sh b/ci/evaluate-release.sh
new file mode 100755
index 0000000000..4ad656d7a0
--- /dev/null
+++ b/ci/evaluate-release.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+source ./release-versions.txt
+
+if [[ $RELEASE_VERSION == *[RCM]* ]]
+then
+ echo "prerelease=true" >> $GITHUB_ENV
+ echo "ga_release=false" >> $GITHUB_ENV
+ echo "maven_server_id=packagecloud-rabbitmq-maven-milestones" >> $GITHUB_ENV
+else
+ echo "prerelease=false" >> $GITHUB_ENV
+ echo "ga_release=true" >> $GITHUB_ENV
+ echo "maven_server_id=ossrh" >> $GITHUB_ENV
+fi
\ No newline at end of file
diff --git a/ci/release-java-client.sh b/ci/release-java-client.sh
new file mode 100755
index 0000000000..d3fd7df952
--- /dev/null
+++ b/ci/release-java-client.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+source ./release-versions.txt
+git checkout $RELEASE_BRANCH
+
+./mvnw release:clean release:prepare -DdryRun=true -Darguments="-DskipTests" --no-transfer-progress \
+ --batch-mode -Dtag="v$RELEASE_VERSION" \
+ -DreleaseVersion=$RELEASE_VERSION \
+ -DdevelopmentVersion=$DEVELOPMENT_VERSION \
+
+./mvnw release:clean release:prepare -Darguments="-DskipTests" --no-transfer-progress \
+ --batch-mode -Dtag="v$RELEASE_VERSION" \
+ -DreleaseVersion=$RELEASE_VERSION \
+ -DdevelopmentVersion=$DEVELOPMENT_VERSION
+
+git checkout "v$RELEASE_VERSION"
+
+if [[ $RELEASE_VERSION == *[RCM]* ]]
+then
+ MAVEN_PROFILE="milestone"
+ echo "prerelease=true" >> $GITHUB_ENV
+else
+ MAVEN_PROFILE="release"
+ echo "prerelease=false" >> $GITHUB_ENV
+fi
+
+./mvnw clean deploy -P $MAVEN_PROFILE -DskipTests --no-transfer-progress
\ No newline at end of file
diff --git a/ci/start-broker.sh b/ci/start-broker.sh
new file mode 100755
index 0000000000..8ad81bb837
--- /dev/null
+++ b/ci/start-broker.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+
+LOCAL_SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq:3.12}
+
+wait_for_message() {
+ while ! docker logs "$1" | grep -q "$2";
+ do
+ sleep 5
+ echo "Waiting 5 seconds for $1 to start..."
+ done
+}
+
+make -C "${PWD}"/tls-gen/basic
+
+mv tls-gen/basic/result/server_$(hostname -s)_certificate.pem tls-gen/basic/result/server_certificate.pem
+mv tls-gen/basic/result/server_$(hostname -s)_key.pem tls-gen/basic/result/server_key.pem
+mv tls-gen/basic/server_$(hostname -s) tls-gen/basic/server
+mv tls-gen/basic/client_$(hostname -s) tls-gen/basic/client
+
+mkdir -p rabbitmq-configuration/tls
+
+cp -R "${PWD}"/tls-gen/basic/* rabbitmq-configuration/tls
+chmod -R o+r rabbitmq-configuration/tls/*
+./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
+cp target/test-classes/rabbit@localhost.config rabbitmq-configuration/rabbitmq.config
+
+echo "Running RabbitMQ ${RABBITMQ_IMAGE}"
+
+docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
+docker run -d --name rabbitmq \
+ --network host \
+ -v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
+ "${RABBITMQ_IMAGE}"
+
+wait_for_message rabbitmq "completed with"
+
+docker exec rabbitmq rabbitmq-diagnostics erlang_version
+docker exec rabbitmq rabbitmqctl version
diff --git a/ci/start-cluster.sh b/ci/start-cluster.sh
new file mode 100755
index 0000000000..f855daaf93
--- /dev/null
+++ b/ci/start-cluster.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+
+LOCAL_SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq:3.12}
+
+wait_for_message() {
+ while ! docker logs "$1" | grep -q "$2";
+ do
+ sleep 5
+ echo "Waiting 5 seconds for $1 to start..."
+ done
+}
+
+make -C "${PWD}"/tls-gen/basic
+
+mv tls-gen/basic/result/server_$(hostname -s)_certificate.pem tls-gen/basic/result/server_certificate.pem
+mv tls-gen/basic/result/server_$(hostname -s)_key.pem tls-gen/basic/result/server_key.pem
+mv tls-gen/basic/server_$(hostname -s) tls-gen/basic/server
+mv tls-gen/basic/client_$(hostname -s) tls-gen/basic/client
+
+mkdir -p rabbitmq-configuration/tls
+
+cp -R "${PWD}"/tls-gen/basic/* rabbitmq-configuration/tls
+chmod -R o+r rabbitmq-configuration/tls/*
+./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
+cp target/test-classes/rabbit@localhost.config rabbitmq-configuration/rabbit@localhost.config
+cp target/test-classes/hare@localhost.config rabbitmq-configuration/hare@localhost.config
+
+echo "Running RabbitMQ ${RABBITMQ_IMAGE}"
+
+docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
+docker run -d --name rabbitmq \
+ --network host \
+ -v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
+ --env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbit@localhost.config \
+ --env RABBITMQ_NODENAME=rabbit@$(hostname) \
+ --env RABBITMQ_NODE_PORT=5672 \
+ --env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
+ "${RABBITMQ_IMAGE}"
+
+# for CLI commands to share the same cookie
+docker exec rabbitmq bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
+docker exec rabbitmq chmod 0600 /var/lib/rabbitmq/.erlang.cookie
+
+wait_for_message rabbitmq "completed with"
+
+docker run -d --name hare \
+ --network host \
+ -v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
+ --env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/hare@localhost.config \
+ --env RABBITMQ_NODENAME=hare@$(hostname) \
+ --env RABBITMQ_NODE_PORT=5673 \
+ --env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
+ "${RABBITMQ_IMAGE}"
+
+# for CLI commands to share the same cookie
+docker exec hare bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
+docker exec hare chmod 0600 /var/lib/rabbitmq/.erlang.cookie
+
+wait_for_message hare "completed with"
+
+docker exec hare rabbitmqctl --node hare@$(hostname) status
+
+docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) is_running
+docker exec hare rabbitmq-diagnostics --node hare@$(hostname) is_running
+
+docker exec hare rabbitmqctl --node hare@$(hostname) stop_app
+docker exec hare rabbitmqctl --node hare@$(hostname) join_cluster rabbit@$(hostname)
+docker exec hare rabbitmqctl --node hare@$(hostname) start_app
+
+sleep 10
+
+docker exec hare rabbitmqctl --node hare@$(hostname) await_startup
+
+docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) erlang_version
+docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) version
+docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) status
+docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) cluster_status
diff --git a/deploy-javadoc.sh b/deploy-javadoc.sh
index 74878215e9..46cdb09398 100755
--- a/deploy-javadoc.sh
+++ b/deploy-javadoc.sh
@@ -5,6 +5,11 @@ TAG=$(git describe --exact-match --tags $(git log -n1 --pretty='%h'))
make deps
./mvnw -q clean javadoc:javadoc -Dmaven.javadoc.failOnError=false
+
+if [ -e target/site/apidocs/element-list ]
+ then cp target/site/apidocs/element-list target/site/apidocs/package-list
+fi
+
git co gh-pages
rm -rf $DEPLOY_DIRECTORY/*
cp -r target/site/apidocs/* $DEPLOY_DIRECTORY
diff --git a/pom.xml b/pom.xml
index f9c92a513d..ec466f29a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.rabbitmq
amqp-client
- 5.13.0-SNAPSHOT
+ 5.16.2-SNAPSHOT
jar
RabbitMQ Java Client
@@ -13,7 +13,7 @@
- ASL 2.0
+ AL 2.0
https://www.apache.org/licenses/LICENSE-2.0.html
repo
@@ -54,35 +54,37 @@
UTF-8
UTF-8
- 1.7.31
- 4.2.2
- 1.7.1
- 2.12.3
- 1.2.3
+ 1.7.36
+ 4.2.12
+ 1.9.3
+ 1.17.0
+ 2.13.4
+ 1.2.11
4.13.2
- 3.11.2
- 3.20.2
- 9.4.42.v20210604
- 1.69
+ 4.8.0
+ 3.23.1
+ 9.4.48.v20220622
+ 1.70
+ 0.10
- 3.2.0
+ 3.4.1
2.5.3
- 2.3
- 3.1.0
- 3.0.1
- 2.0
- 2.4.8
- 1.5
- 1.12
- 3.8.1
+ 2.12.0
+ 3.3.0
+ 3.2.1
+ 2.1.1
+ 2.4.21
+ 1.6
+ 3.3.0
+ 3.10.1
2.22.2
2.22.2
- 1.6
- 3.0.2
- 3.2.0
+ 3.0.1
+ 3.2.2
+ 5.1.8
0.0.6
- 1.6.8
- 1.8
+ 1.6.13
+ 1.11
1.3
- javadoc-no-module-dir-java-11
-
- [11,)
-
-
- --no-module-directories
-
-
-