From 7f2e6d59445eeefcd2c331ff3365eaaebda9095b Mon Sep 17 00:00:00 2001 From: fegbers Date: Wed, 1 Jul 2026 09:55:18 +0200 Subject: [PATCH 01/17] LIBRARIES-1638 - Add x-queue-type support --- README.md | 2 +- pom.xml | 8 ++- .../creator/DlxQueueCreator.java | 14 +++- .../configuration/creator/QueueCreator.java | 8 ++- ...ationForMultipleConnectionFactoriesIT.java | 10 +-- ...eManagementWithOneConnectionFactoryIT.java | 14 ++-- .../creator/DlxQueueCreatorTest.java | 51 +++++++++++--- .../creator/QueueCreatorTest.java | 66 +++++++++++++++++-- ...ion-multipleConnectionFactories.properties | 4 +- ...agementWithOneConnectionFactory.properties | 3 +- 10 files changed, 149 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 6d89d8d..ce356cb 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ com.avides.spring spring-rabbit - 2.7.0 + 3.0.0-RC1 ``` diff --git a/pom.xml b/pom.xml index d37f7bf..1d51cda 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.avides.spring spring-rabbit - 2.7.0 + 3.0.0-RC1 spring-rabbit Makes configuring RabbitMQ for Spring Boot applications more comfortable @@ -24,6 +24,10 @@ Julian Eggers eggers.julian@gmail.com + + Finn Egbers + finn.egbers@gmail.com + @@ -82,7 +86,7 @@ 4.3 1.4.0 3.0.0 - 1.3.0 + 1.4.0 ${logback-classic.version} 1.2.10 4.1.1 diff --git a/src/main/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreator.java b/src/main/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreator.java index 676d37a..6124129 100644 --- a/src/main/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreator.java +++ b/src/main/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreator.java @@ -1,5 +1,8 @@ package com.avides.spring.rabbit.configuration.creator; +import static com.avides.spring.rabbit.configuration.creator.QueueCreator.DEFAULT_X_QUEUE_TYPE; +import static com.avides.spring.rabbit.configuration.creator.QueueCreator.X_QUEUE_TYPE; + import java.util.HashMap; import java.util.Map; @@ -22,7 +25,7 @@ public Queue createInstance() { Map dlxArguments = new HashMap<>(); dlxArguments.put("x-max-length", Long.valueOf(queueProperties.getLimit())); - dlxArguments.put("x-queue-mode", "lazy"); + dlxArguments.put(X_QUEUE_TYPE, resolveQueueType()); Queue dlxQueue = new Queue(queueProperties.getName() + ".dlx", queueProperties.isDurable(), queueProperties.isExclusive(), false, dlxArguments); dlxQueue.setAdminsThatShouldDeclare(rabbitAdmin); @@ -30,4 +33,13 @@ public Queue createInstance() return dlxQueue; } + private String resolveQueueType() + { + if (queueProperties.getArguments() != null && queueProperties.getArguments().get(X_QUEUE_TYPE) != null) + { + return (String) queueProperties.getArguments().get(X_QUEUE_TYPE); + } + return DEFAULT_X_QUEUE_TYPE; + } + } diff --git a/src/main/java/com/avides/spring/rabbit/configuration/creator/QueueCreator.java b/src/main/java/com/avides/spring/rabbit/configuration/creator/QueueCreator.java index 526a401..057714c 100644 --- a/src/main/java/com/avides/spring/rabbit/configuration/creator/QueueCreator.java +++ b/src/main/java/com/avides/spring/rabbit/configuration/creator/QueueCreator.java @@ -1,6 +1,7 @@ package com.avides.spring.rabbit.configuration.creator; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -18,6 +19,10 @@ @RequiredArgsConstructor public class QueueCreator implements Creator { + public static final String X_QUEUE_TYPE = "x-queue-type"; + + public static final String DEFAULT_X_QUEUE_TYPE = "quorum"; + private final QueueProperties queueProperties; private final RabbitAdmin rabbitAdmin; @@ -40,7 +45,8 @@ public Queue createInstance() private Map createArguments() { - Map arguments = queueProperties.getArguments(); + Map arguments = new HashMap<>(queueProperties.getArguments()); + arguments.putIfAbsent(X_QUEUE_TYPE, DEFAULT_X_QUEUE_TYPE); arguments.put("x-dead-letter-exchange", ""); arguments.put("x-dead-letter-routing-key", queueProperties.getName() + ".dlx"); arguments.put("x-max-length", Long.valueOf(queueProperties.getLimit())); diff --git a/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java b/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java index 13f1eba..27e6d02 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java @@ -1,5 +1,6 @@ package com.avides.spring.rabbit.configuration; +import static com.avides.spring.rabbit.configuration.creator.QueueCreator.X_QUEUE_TYPE; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -119,7 +120,8 @@ private void checkQueues() assertEquals("com.avides.spring.rabbit.queue.zero", queueZero.getName()); assertEquals(1, queueZero.getDeclaringAdmins().size()); assertEquals(firstRabbitAdmin, queueZero.getDeclaringAdmins().iterator().next()); - assertEquals(3, queueZero.getArguments().size()); + assertEquals(4, queueZero.getArguments().size()); + assertEquals("quorum", queueZero.getArguments().get(X_QUEUE_TYPE)); assertTrue(String.valueOf(queueZero.getArguments().get("x-dead-letter-exchange")).isEmpty()); assertEquals("com.avides.spring.rabbit.queue.zero.dlx", queueZero.getArguments().get("x-dead-letter-routing-key")); assertEquals(Long.valueOf(50), queueZero.getArguments().get("x-max-length")); @@ -130,7 +132,7 @@ private void checkQueues() assertEquals(firstRabbitAdmin, queueZeroDlx.getDeclaringAdmins().iterator().next()); assertEquals(2, queueZeroDlx.getArguments().size()); assertEquals(Long.valueOf(50), queueZeroDlx.getArguments().get("x-max-length")); - assertEquals("lazy", queueZeroDlx.getArguments().get("x-queue-mode")); + assertEquals("quorum", queueZeroDlx.getArguments().get(X_QUEUE_TYPE)); // queueOne assertEquals("com.avides.spring.rabbit.queue.one", queueOne.getName()); @@ -138,10 +140,10 @@ private void checkQueues() // assertEquals(rabbitAdmin, queueOne.getDeclaringAdmins().iterator().next()); Currently the queue is declared by a different rabbitAdmin and the // application not saves it assertEquals(5, queueOne.getArguments().size()); + assertEquals("classic", queueOne.getArguments().get(X_QUEUE_TYPE)); assertTrue(String.valueOf(queueOne.getArguments().get("x-dead-letter-exchange")).isEmpty()); assertEquals("com.avides.spring.rabbit.queue.one.dlx", queueOne.getArguments().get("x-dead-letter-routing-key")); assertEquals(Long.valueOf(1), queueOne.getArguments().get("x-max-length")); - assertEquals("lazy", queueOne.getArguments().get("x-queue-mode")); assertEquals("test", queueOne.getArguments().get("someAdditionalQueueArgumentsKey")); // queueOneDlx @@ -150,8 +152,8 @@ private void checkQueues() // assertEquals(rabbitAdmin, queueOneDlx.getDeclaringAdmins().iterator().next()); Currently the queue is declared by a different rabbitAdmin and the // application not saves it assertEquals(2, queueOneDlx.getArguments().size()); + assertEquals("classic", queueOneDlx.getArguments().get(X_QUEUE_TYPE)); assertEquals(Long.valueOf(1), queueOneDlx.getArguments().get("x-max-length")); - assertEquals("lazy", queueOneDlx.getArguments().get("x-queue-mode")); } @EnableAutoConfiguration(exclude = RabbitAutoConfiguration.class) diff --git a/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForQueueManagementWithOneConnectionFactoryIT.java b/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForQueueManagementWithOneConnectionFactoryIT.java index 5e1049a..d6a6c55 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForQueueManagementWithOneConnectionFactoryIT.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForQueueManagementWithOneConnectionFactoryIT.java @@ -1,5 +1,6 @@ package com.avides.spring.rabbit.configuration; +import static com.avides.spring.rabbit.configuration.creator.QueueCreator.X_QUEUE_TYPE; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -112,7 +113,8 @@ private void checkQueues() assertEquals("com.avides.spring.rabbit.queue.zero", queueZero.getName()); assertEquals(1, queueZero.getDeclaringAdmins().size()); assertEquals(rabbitAdmin, queueZero.getDeclaringAdmins().iterator().next()); - assertEquals(3, queueZero.getArguments().size()); + assertEquals(4, queueZero.getArguments().size()); + assertEquals("quorum", queueZero.getArguments().get(X_QUEUE_TYPE)); assertTrue(String.valueOf(queueZero.getArguments().get("x-dead-letter-exchange")).isEmpty()); assertEquals("com.avides.spring.rabbit.queue.zero.dlx", queueZero.getArguments().get("x-dead-letter-routing-key")); assertEquals(Long.valueOf(50), queueZero.getArguments().get("x-max-length")); @@ -123,9 +125,9 @@ private void checkQueues() assertEquals(1, queueZeroDlx.getDeclaringAdmins().size()); assertEquals(rabbitAdmin, queueZeroDlx.getDeclaringAdmins().iterator().next()); assertEquals(2, queueZeroDlx.getArguments().size()); + assertEquals("quorum", queueZeroDlx.getArguments().get(X_QUEUE_TYPE)); assertEquals(Long.valueOf(50), queueZeroDlx.getArguments().get("x-max-length")); - assertEquals("lazy", queueZeroDlx.getArguments().get("x-queue-mode")); - assertFalse(queueZero.isExclusive()); + assertFalse(queueZeroDlx.isExclusive()); // queueOne assertEquals("com.avides.spring.rabbit.queue.one", queueOne.getName()); @@ -133,10 +135,10 @@ private void checkQueues() // assertEquals(rabbitAdmin, queueOne.getDeclaringAdmins().iterator().next()); Currently the queue is declared by a different rabbitAdmin and the // application not saves it assertEquals(5, queueOne.getArguments().size()); + assertEquals("classic", queueOne.getArguments().get(X_QUEUE_TYPE)); assertTrue(String.valueOf(queueOne.getArguments().get("x-dead-letter-exchange")).isEmpty()); assertEquals("com.avides.spring.rabbit.queue.one.dlx", queueOne.getArguments().get("x-dead-letter-routing-key")); assertEquals(Long.valueOf(1), queueOne.getArguments().get("x-max-length")); - assertEquals("lazy", queueOne.getArguments().get("x-queue-mode")); assertEquals("test", queueOne.getArguments().get("someAdditionalQueueArgumentsKey")); assertTrue(queueOne.isExclusive()); @@ -146,8 +148,8 @@ private void checkQueues() // assertEquals(rabbitAdmin, queueOneDlx.getDeclaringAdmins().iterator().next()); Currently the queue is declared by a different rabbitAdmin and the // application not saves it assertEquals(2, queueOneDlx.getArguments().size()); + assertEquals("classic", queueOneDlx.getArguments().get(X_QUEUE_TYPE)); assertEquals(Long.valueOf(1), queueOneDlx.getArguments().get("x-max-length")); - assertEquals("lazy", queueOneDlx.getArguments().get("x-queue-mode")); - assertTrue(queueOne.isExclusive()); + assertTrue(queueOneDlx.isExclusive()); } } diff --git a/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java b/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java index 11794cb..33b7739 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java @@ -1,5 +1,6 @@ package com.avides.spring.rabbit.configuration.creator; +import static com.avides.spring.rabbit.configuration.creator.QueueCreator.X_QUEUE_TYPE; import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.getCurrentArguments; import static org.junit.Assert.assertEquals; @@ -37,7 +38,7 @@ public void testCreateInstanceWithDurable() assertEquals("testQueueName.dlx", queue.getName()); assertEquals(2, queue.getArguments().size()); assertEquals("100", queue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", queue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", queue.getArguments().get(X_QUEUE_TYPE).toString()); assertTrue(queue.isDurable()); assertFalse(queue.isAutoDelete()); assertFalse(queue.isExclusive()); @@ -55,7 +56,7 @@ public void testCreateInstanceWithDurable() assertEquals("testQueueName.dlx", dlxQueue.getName()); assertEquals(2, dlxQueue.getArguments().size()); assertEquals("100", dlxQueue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", dlxQueue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", dlxQueue.getArguments().get(X_QUEUE_TYPE).toString()); assertTrue(dlxQueue.isDurable()); assertFalse(dlxQueue.isAutoDelete()); assertFalse(dlxQueue.isExclusive()); @@ -71,7 +72,7 @@ public void testCreateInstanceWithNotDurable() assertEquals("testQueueName.dlx", queue.getName()); assertEquals(2, queue.getArguments().size()); assertEquals("100", queue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", queue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", queue.getArguments().get(X_QUEUE_TYPE).toString()); assertFalse(queue.isDurable()); assertFalse(queue.isAutoDelete()); assertFalse(queue.isExclusive()); @@ -89,7 +90,7 @@ public void testCreateInstanceWithNotDurable() assertEquals("testQueueName.dlx", dlxQueue.getName()); assertEquals(2, dlxQueue.getArguments().size()); assertEquals("100", dlxQueue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", dlxQueue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", dlxQueue.getArguments().get(X_QUEUE_TYPE).toString()); assertFalse(dlxQueue.isDurable()); assertFalse(dlxQueue.isAutoDelete()); assertFalse(dlxQueue.isExclusive()); @@ -105,7 +106,7 @@ public void testCreateInstanceWithExclusive() assertEquals("testQueueName.dlx", queue.getName()); assertEquals(2, queue.getArguments().size()); assertEquals("100", queue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", queue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", queue.getArguments().get(X_QUEUE_TYPE).toString()); assertTrue(queue.isDurable()); assertFalse(queue.isAutoDelete()); assertTrue(queue.isExclusive()); @@ -123,7 +124,7 @@ public void testCreateInstanceWithExclusive() assertEquals("testQueueName.dlx", dlxQueue.getName()); assertEquals(2, dlxQueue.getArguments().size()); assertEquals("100", dlxQueue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", dlxQueue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", dlxQueue.getArguments().get(X_QUEUE_TYPE).toString()); assertTrue(dlxQueue.isDurable()); assertFalse(dlxQueue.isAutoDelete()); assertTrue(dlxQueue.isExclusive()); @@ -139,7 +140,7 @@ public void testCreateInstanceWithNotExclusive() assertEquals("testQueueName.dlx", queue.getName()); assertEquals(2, queue.getArguments().size()); assertEquals("100", queue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", queue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", queue.getArguments().get(X_QUEUE_TYPE).toString()); assertTrue(queue.isDurable()); assertFalse(queue.isAutoDelete()); assertFalse(queue.isExclusive()); @@ -157,7 +158,41 @@ public void testCreateInstanceWithNotExclusive() assertEquals("testQueueName.dlx", dlxQueue.getName()); assertEquals(2, dlxQueue.getArguments().size()); assertEquals("100", dlxQueue.getArguments().get("x-max-length").toString()); - assertEquals("lazy", dlxQueue.getArguments().get("x-queue-mode").toString()); + assertEquals("quorum", dlxQueue.getArguments().get(X_QUEUE_TYPE).toString()); + assertTrue(dlxQueue.isDurable()); + assertFalse(dlxQueue.isAutoDelete()); + assertFalse(dlxQueue.isExclusive()); + } + + @Test + public void testCreateInstanceWithOverridenQueueType() + { + rabbitAdmin.declareQueue(anyObject(Queue.class)); + expectLastCall().andAnswer(() -> + { + Queue queue = (Queue) getCurrentArguments()[0]; + assertEquals("testQueueName.dlx", queue.getName()); + assertEquals(2, queue.getArguments().size()); + assertEquals("100", queue.getArguments().get("x-max-length").toString()); + assertEquals("classic", queue.getArguments().get(X_QUEUE_TYPE).toString()); + assertTrue(queue.isDurable()); + assertFalse(queue.isAutoDelete()); + assertFalse(queue.isExclusive()); + return "testQueueName.dlx"; + }); + + replayAll(); + QueueProperties queueProperties = getCompleteQueueProperties(); + queueProperties.getArguments().put(X_QUEUE_TYPE, "classic"); + creator = new DlxQueueCreator(rabbitAdmin, queueProperties); + + Queue dlxQueue = creator.createInstance(); + verifyAll(); + + assertEquals("testQueueName.dlx", dlxQueue.getName()); + assertEquals(2, dlxQueue.getArguments().size()); + assertEquals("100", dlxQueue.getArguments().get("x-max-length").toString()); + assertEquals("classic", dlxQueue.getArguments().get(X_QUEUE_TYPE).toString()); assertTrue(dlxQueue.isDurable()); assertFalse(dlxQueue.isAutoDelete()); assertFalse(dlxQueue.isExclusive()); diff --git a/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java b/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java index 0a4f874..502a40c 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java @@ -1,5 +1,6 @@ package com.avides.spring.rabbit.configuration.creator; +import static com.avides.spring.rabbit.configuration.creator.QueueCreator.X_QUEUE_TYPE; import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.getCurrentArguments; import static org.junit.Assert.assertEquals; @@ -49,7 +50,8 @@ public void testCreateInstance() assertFalse(queue.isAutoDelete()); Map arguments = queue.getArguments(); - assertEquals(4, arguments.size()); + assertEquals(5, arguments.size()); + assertEquals("quorum", arguments.get(X_QUEUE_TYPE)); assertEquals("", arguments.get("x-dead-letter-exchange")); assertEquals("testQueueName.dlx", arguments.get("x-dead-letter-routing-key")); assertEquals("100", arguments.get("x-max-length").toString()); @@ -87,6 +89,59 @@ public void testCreateInstance() verifyAll(); } + @Test + public void testCreateInstanceWithOverridenQueueType() + { + rabbitAdmin.declareQueue(anyObject(Queue.class)); + expectLastCall().andAnswer(() -> + { + Queue queue = (Queue) getCurrentArguments()[0]; + assertEquals("testQueueName", queue.getName()); + assertTrue(queue.isDurable()); + assertFalse(queue.isExclusive()); + assertFalse(queue.isAutoDelete()); + + Map arguments = queue.getArguments(); + assertEquals(5, arguments.size()); + assertEquals("classic", arguments.get(X_QUEUE_TYPE)); + assertEquals("", arguments.get("x-dead-letter-exchange")); + assertEquals("testQueueName.dlx", arguments.get("x-dead-letter-routing-key")); + assertEquals("100", arguments.get("x-max-length").toString()); + assertEquals("additionalConfig", arguments.get("additionalArgument")); + + return "testQueueName"; + }); + + rabbitAdmin.declareExchange(exchange); + + exchange.getName(); + expectLastCall().andReturn("springExchange"); + + rabbitAdmin.declareBinding(anyObject(Binding.class)); + expectLastCall().andAnswer(() -> + { + Binding binding = (Binding) getCurrentArguments()[0]; + assertTrue(binding.getArguments().isEmpty()); + assertEquals("product", binding.getRoutingKey()); + assertEquals("springExchange", binding.getExchange()); + return null; + }); + + replayAll(); + Map arguments = new HashMap<>(); + arguments.put(X_QUEUE_TYPE, "classic"); + arguments.put("x-dead-letter-exchange", "toOverride"); + arguments.put("x-dead-letter-routing-key", "toOverride"); + arguments.put("x-max-length", Long.valueOf(10000)); + arguments.put("additionalArgument", "additionalConfig"); + + QueueProperties completeQueueProperties = getCompleteQueueProperties(); + completeQueueProperties.setArguments(arguments); + creator = new QueueCreator(completeQueueProperties, rabbitAdmin, exchange); + creator.createInstance(); + verifyAll(); + } + @Test public void testCreateInstanceWithMultipleRoutingKeys() { @@ -100,7 +155,8 @@ public void testCreateInstanceWithMultipleRoutingKeys() assertFalse(queue.isAutoDelete()); Map arguments = queue.getArguments(); - assertEquals(4, arguments.size()); + assertEquals(5, arguments.size()); + assertEquals("quorum", arguments.get(X_QUEUE_TYPE)); assertEquals("", arguments.get("x-dead-letter-exchange")); assertEquals("testQueueName.dlx", arguments.get("x-dead-letter-routing-key")); assertEquals("100", arguments.get("x-max-length").toString()); @@ -204,7 +260,8 @@ public void testCreateInstanceWithExclusive() assertFalse(queue.isAutoDelete()); Map arguments = queue.getArguments(); - assertEquals(4, arguments.size()); + assertEquals(5, arguments.size()); + assertEquals("quorum", arguments.get(X_QUEUE_TYPE)); assertEquals("", arguments.get("x-dead-letter-exchange")); assertEquals("testQueueName.dlx", arguments.get("x-dead-letter-routing-key")); assertEquals("100", arguments.get("x-max-length").toString()); @@ -257,7 +314,8 @@ public void testCreateInstanceWithNotExclusive() assertFalse(queue.isAutoDelete()); Map arguments = queue.getArguments(); - assertEquals(4, arguments.size()); + assertEquals(5, arguments.size()); + assertEquals("quorum", arguments.get(X_QUEUE_TYPE)); assertEquals("", arguments.get("x-dead-letter-exchange")); assertEquals("testQueueName.dlx", arguments.get("x-dead-letter-routing-key")); assertEquals("100", arguments.get("x-max-length").toString()); diff --git a/src/test/resources/application-multipleConnectionFactories.properties b/src/test/resources/application-multipleConnectionFactories.properties index 167828d..706e723 100644 --- a/src/test/resources/application-multipleConnectionFactories.properties +++ b/src/test/resources/application-multipleConnectionFactories.properties @@ -25,13 +25,13 @@ spring.rabbitmq.queues[0].rabbit-admin.connection-factory.bean-name=firstConnect spring.rabbitmq.queues[1].name=com.avides.spring.rabbit.queue.one spring.rabbitmq.queues[1].routing-keys[0]=queue.one.one spring.rabbitmq.queues[1].routing-keys[1]=queue.one.two -spring.rabbitmq.queues[1].routing-keys[1]=queue.one.three +spring.rabbitmq.queues[1].routing-keys[2]=queue.one.three spring.rabbitmq.queues[1].limit=1 spring.rabbitmq.queues[1].durable=false +spring.rabbitmq.queues[1].arguments[x-queue-type]=classic spring.rabbitmq.queues[1].arguments[x-dead-letter-exchange]=test spring.rabbitmq.queues[1].arguments[x-dead-letter-routing-key]=test.dlx spring.rabbitmq.queues[1].arguments[x-max-length]=99999 -spring.rabbitmq.queues[1].arguments[x-queue-mode]=lazy spring.rabbitmq.queues[1].arguments[someAdditionalQueueArgumentsKey]=test spring.rabbitmq.queues[1].exchange.name=com.avides.one spring.rabbitmq.queues[1].exchange.type=DIRECT diff --git a/src/test/resources/application-queueManagementWithOneConnectionFactory.properties b/src/test/resources/application-queueManagementWithOneConnectionFactory.properties index 30424ca..23376ac 100644 --- a/src/test/resources/application-queueManagementWithOneConnectionFactory.properties +++ b/src/test/resources/application-queueManagementWithOneConnectionFactory.properties @@ -14,11 +14,10 @@ spring.rabbitmq.queues[1].routing-keys[2]=queue.one.three spring.rabbitmq.queues[1].limit=1 spring.rabbitmq.queues[1].durable=false spring.rabbitmq.queues[1].exclusive=true -spring.rabbitmq.queues[1].queue-mode=LAZY +spring.rabbitmq.queues[1].arguments[x-queue-type]=classic spring.rabbitmq.queues[1].arguments[x-dead-letter-exchange]=test spring.rabbitmq.queues[1].arguments[x-dead-letter-routing-key]=test.dlx spring.rabbitmq.queues[1].arguments[x-max-length]=99999 -spring.rabbitmq.queues[1].arguments[x-queue-mode]=lazy spring.rabbitmq.queues[1].arguments[someAdditionalQueueArgumentsKey]=test spring.rabbitmq.queues[1].exchange.name=com.avides.one spring.rabbitmq.queues[1].exchange.type=DIRECT From 99d6c2e528de1651aeb35f954ce0e1b2205391a5 Mon Sep 17 00:00:00 2001 From: fegbers Date: Wed, 1 Jul 2026 09:59:22 +0200 Subject: [PATCH 02/17] fixes --- .github/workflows/nightly.yml | 59 ++++++--- .github/workflows/release.yml | 123 +++++++++--------- .github/workflows/review.yml | 110 +++++++++------- ...ationForMultipleConnectionFactoriesIT.java | 2 +- 4 files changed, 166 insertions(+), 128 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index d6da913..1f4622a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -13,27 +13,44 @@ jobs: runs-on: ubuntu-latest steps: - # Setup java environment - - name: setup-java - uses: actions/setup-java@v1 - with: - java-version: 11 - # Checkout the git repository - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + # Get the current project version from pom.xml + - name: get-project-version + id: get_project_version + uses: avides/actions-project-version-check@v2 with: - ref: ${{ github.head_ref }} - token: ${{ secrets.GPR_TOKEN }} - fetch-depth: '' + token: ${{ secrets.GITHUB_TOKEN }} + file-to-check: pom.xml + only-return-version: true - # Execute some necessary git commands to get more repository informations - - name: post-checkout - run: git fetch --prune --unshallow + # Determine java-version + - name: determine-java-version + id: determine_java_version + run: | + if grep -q "" pom.xml; then + JAVA_VERSION=$(grep -oP '(?<=).*?(?=)' pom.xml | head -n 1 | cut -d. -f1 | xargs) + elif [ -f ".github/java.version" ]; then + JAVA_VERSION=$(cat .github/java.version | xargs) + else + JAVA_VERSION="11" + fi + echo "detected_java_version=$JAVA_VERSION" >> $GITHUB_OUTPUT + + # Setup java environment + - name: setup-java + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: ${{ steps.determine_java_version.outputs.detected_java_version }} # Setup/load GitHub Actions caching for external dependencies, in this case especially for Maven - name: caching - uses: actions/cache@v2 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} @@ -51,16 +68,16 @@ jobs: - name: integration-tests run: mvn -DskipUTs -Dgpg.skip=true jacoco:restore-instrumented-classes verify - # Execute sonar analysis and publish results to the sonarqube server + # Execute sonar analysis and publish results to the sonarcloud server - name: sonar-analyse env: - SONAR_HOST: ${{ secrets.OS_SONAR_HOST_URL }} - SONAR_TOKEN: ${{ secrets.OS_SONAR_TOKEN }} + PROJECT_VERSION: ${{ steps.get_project_version.outputs.version }} run: | export SONAR_ORGANIZATION=$(echo ${GITHUB_REPOSITORY} | cut -d / -f 1) - mvn sonar:sonar \ - -Dsonar.host.url=${SONAR_HOST} \ - -Dsonar.login=${SONAR_TOKEN} \ + mvn org.sonarsource.scanner.maven:sonar-maven-plugin:5.5.0.6356:sonar \ + -Dsonar.host.url=${{ secrets.OS_SONAR_HOST_URL }} \ + -Dsonar.token=${{ secrets.OS_SONAR_TOKEN }} \ + -Dsonar.projectVersion=${PROJECT_VERSION} \ + -Dsonar.branch.name=master \ -Dsonar.organization=${SONAR_ORGANIZATION} \ -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} \ - -Dsonar.java.binaries=./target/classes diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3879c8d..be9c44b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -# This configuration is used for the deployment and publish to GitHub Packages +# This configuration is used for the deployment and publish to Maven Central name: release on: @@ -11,81 +11,88 @@ jobs: release: timeout-minutes: 30 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - runs-on: ubuntu-latest steps: - # Setup java environment - - name: setup-java - uses: actions/setup-java@v1 - with: - java-version: 11 - server-id: ossrh - server-username: OSSRH_USERNAME - server-password: OSSRH_PASSWORD - - # Checkout the git repository - - name: setup-github-release - run: sed -i -e 's/<\/servers>/github<\/id>x-access-token<\/username>${GITHUB_TOKEN}<\/password><\/server><\/servers>/g' /home/runner/.m2/settings.xml - - # Setup GPG for Maven Central deployment - - name: setup-gpg - env: - GPG_PRIVATE_KEY: ${{ secrets.OS_GPG_PRIVATE_KEY }} - run: cat <(echo -e "${GPG_PRIVATE_KEY}") | gpg --batch --import - # Checkout the git repository - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: - ref: ${{ github.head_ref }} - token: ${{ secrets.GPR_TOKEN }} - fetch-depth: '' + fetch-depth: 0 + + # Get the current project version from pom.xml + - name: get-project-version + id: get_project_version + uses: avides/actions-project-version-check@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + file-to-check: pom.xml + only-return-version: true - # Execute some necessary git commands to get more repository informations - - name: post-checkout - run: git fetch --prune --unshallow + # Determine java-version + - name: determine-java-version + id: determine_java_version + run: | + if grep -q "" pom.xml; then + JAVA_VERSION=$(grep -oP '(?<=).*?(?=)' pom.xml | head -n 1 | cut -d. -f1 | xargs) + elif [ -f ".github/java.version" ]; then + JAVA_VERSION=$(cat .github/java.version | xargs) + else + JAVA_VERSION="11" + fi + echo "detected_java_version=$JAVA_VERSION" >> $GITHUB_OUTPUT + + # Setup java environment + - name: setup-java + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: ${{ steps.determine_java_version.outputs.detected_java_version }} + server-id: central + server-username: OS_CENTRAL_USERNAME + server-password: OS_CENTRAL_PASSWORD # Setup GitHub Actions caching for external dependencies, in this case especially for Maven - name: caching - uses: actions/cache@v2 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-maven- - # Execute Maven command for the deployment and publish to Maven Central + # Setup GPG for Maven Central deployment + - name: setup-gpg + env: + GPG_PRIVATE_KEY: ${{ secrets.OS_GPG_PRIVATE_KEY }} + run: cat <(echo -e "${GPG_PRIVATE_KEY}") | gpg --batch --import + + # Execute Maven command to build the project and publish to Maven Central - name: deploy env: - OSSRH_USERNAME: ${{ secrets.OS_OSSRH_USERNAME }} - OSSRH_PASSWORD: ${{ secrets.OS_OSSRH_PASSWORD }} + OS_CENTRAL_USERNAME: ${{ secrets.OS_CENTRAL_USERNAME }} + OS_CENTRAL_PASSWORD: ${{ secrets.OS_CENTRAL_PASSWORD }} GPG_PASSPHRASE: ${{ secrets.OS_GPG_PASSPHRASE }} - run: mvn deploy -Dmaven.wagon.http.pool=false -Dgpg.executable=gpg -Dgpg.passphrase=${GPG_PASSPHRASE} + PROJECT_VERSION: ${{ steps.get_project_version.outputs.version }} + run: | + if [[ "$PROJECT_VERSION" == *"SNAPSHOT"* || "$PROJECT_VERSION" == *"RC"* ]]; then + mvn -Dmaven.wagon.http.pool=false -Dgpg.executable=gpg -Dgpg.passphrase=${GPG_PASSPHRASE} clean deploy + else + mvn -Dmaven.wagon.http.pool=false -Dgpg.executable=gpg -Dgpg.passphrase=${GPG_PASSPHRASE} -DskipUTs -DskipITs clean deploy + fi # Execute sonar analysis and publish results to the sonarcloud server - name: sonar-analyse env: - SONAR_HOST: ${{ secrets.OS_SONAR_HOST_URL }} - SONAR_TOKEN: ${{ secrets.OS_SONAR_TOKEN }} + PROJECT_VERSION: ${{ steps.get_project_version.outputs.version }} run: | export SONAR_ORGANIZATION=$(echo ${GITHUB_REPOSITORY} | cut -d / -f 1) - mvn sonar:sonar \ - -Dsonar.host.url=${SONAR_HOST} \ - -Dsonar.login=${SONAR_TOKEN} \ + mvn org.sonarsource.scanner.maven:sonar-maven-plugin:5.5.0.6356:sonar \ + -Dsonar.host.url=${{ secrets.OS_SONAR_HOST_URL }} \ + -Dsonar.token=${{ secrets.OS_SONAR_TOKEN }} \ + -Dsonar.projectVersion=${PROJECT_VERSION} \ + -Dsonar.branch.name=${{ github.ref_name }} \ -Dsonar.organization=${SONAR_ORGANIZATION} \ - -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} \ - -Dsonar.java.binaries=./target/classes - - # Get the current project version from POM - - name: get-project-version - id: get_project_version - uses: avides/actions-project-version-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - file-to-check: pom.xml - only-return-version: true + -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} # Get last commit message for GitHub Release tag - name: setup-github-release @@ -93,19 +100,19 @@ jobs: env: PROJECT_VERSION: ${{ steps.get_project_version.outputs.version }} run: | - echo ::set-output name=gitcommitmessage::$(git log --no-merges -1 --oneline) + echo "gitcommitmessage=$(git log --no-merges -1 --oneline)" >> $GITHUB_OUTPUT if [[ "$PROJECT_VERSION" == *"SNAPSHOT"* || "$PROJECT_VERSION" == *"RC"* ]]; then - echo ::set-output name=isprerelease::true + echo "isprerelease=true" >> $GITHUB_OUTPUT + else + echo "isprerelease=false" >> $GITHUB_OUTPUT fi # Create and publish GitHub Release tag - name: github-release - uses: actions/create-release@v1 - continue-on-error: true - env: - GITHUB_TOKEN: ${{ secrets.GPR_TOKEN }} + uses: softprops/action-gh-release@v2 with: + token: ${{ secrets.GPR_TOKEN }} tag_name: ${{ steps.get_project_version.outputs.version }} - release_name: ${{ steps.get_project_version.outputs.version }} body: ${{ steps.setup_github_release.outputs.gitcommitmessage }} prerelease: ${{ steps.setup_github_release.outputs.isprerelease }} + files: target/*.jar diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index e358957..6ef1620 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -9,44 +9,32 @@ on: jobs: review: timeout-minutes: 30 - + runs-on: ubuntu-latest - steps: - # Cancels previous run for this branch that have a different commit id (SHA) - - name: cancel-previous-run - uses: styfle/cancel-workflow-action@0.8.0 - with: - access_token: ${{ github.token }} - - # Setup java environment - - name: setup-java - uses: actions/setup-java@v1 - with: - java-version: 11 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + steps: # Checkout the git repository - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: - ref: ${{ github.head_ref }} token: ${{ secrets.GPR_TOKEN }} - fetch-depth: '' - - # Execute some necessary git commands to get more repository informations - - name: post-checkout - run: git fetch --prune --unshallow + ref: ${{ github.head_ref }} + fetch-depth: 0 # Update GitHub Action configuration if necessary - name: action-configuration-autoupdate - uses: avides/actions-action-configuration-autoupdate@v1 + uses: avides/actions-action-configuration-autoupdate@v2 with: token: ${{ secrets.GPR_TOKEN }} actions-configuration-files: os-java-library/nightly.yml,os-java-library/release.yml,os-java-library/review.yml source-repository: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_REPO }} # Push updated GitHub Actions configuration if necessary - - uses: stefanzweifel/git-auto-commit-action@v4 + - uses: stefanzweifel/git-auto-commit-action@v7 with: file_pattern: .github/workflows/*.yml commit_user_name: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_USER }} @@ -56,34 +44,65 @@ jobs: # Verify project version is updated - name: project-version-check - uses: avides/actions-project-version-check@v1 + uses: avides/actions-project-version-check@v2 with: token: ${{ secrets.GITHUB_TOKEN }} file-to-check: pom.xml additional-files-to-check: README.md - # Check if documentation reminder comment is already given - - name: find-documentation-reminder-comment - uses: peter-evans/find-comment@v1 - id: find_documentation_reminder_comment + # Determine java-version + - name: determine-java-version + id: determine_java_version + run: | + if grep -q "" pom.xml; then + JAVA_VERSION=$(grep -oP '(?<=).*?(?=)' pom.xml | head -n 1 | cut -d. -f1 | xargs) + elif [ -f ".github/java.version" ]; then + JAVA_VERSION=$(cat .github/java.version | xargs) + else + JAVA_VERSION="11" + fi + echo "detected_java_version=$JAVA_VERSION" >> $GITHUB_OUTPUT + + # Setup java environment + - name: setup-java + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: ${{ steps.determine_java_version.outputs.detected_java_version }} + + # Check if reminder comment is already given + - name: find-reminder-comment + uses: peter-evans/find-comment@v4 + id: find_reminder_comment with: issue-number: ${{ github.event.number }} body-includes: "Confluence/GitHub documentation added or updated?" - # Add documentation reminder comment if not given - - name: documentation-reminder-comment - uses: jungwinter/comment@v1 + # Add reminder comment if not given + - name: reminder-comment + uses: peter-evans/create-or-update-comment@v5 id: create - if: ${{ steps.find_documentation_reminder_comment.outputs.comment-id == 0 }} + if: ${{ steps.find_reminder_comment.outputs.comment-id == 0 }} with: - type: create - body: 'Confluence/GitHub documentation added or updated?' - issue_number: ${{ github.event.number }} + body: | + - Documentation added or updated? + - Diff-Links as response added? + - [ ] Not necessary + - [ ] Added + + - Breaking-Change present? + - Necessary deployment adjustments added as a comment (Ticket)? + - [ ] Not necessary + - [ ] Added + - Necessary rollback adjustments added as a comment (Ticket)? + - [ ] Not necessary + - [ ] Added + issue-number: ${{ github.event.number }} token: ${{ secrets.GITHUB_TOKEN }} # Setup/load GitHub Actions caching for external dependencies, in this case especially for Maven - name: caching - uses: actions/cache@v2 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} @@ -101,24 +120,19 @@ jobs: - name: integration-tests run: mvn -DskipUTs -Dgpg.skip=true jacoco:restore-instrumented-classes verify - # Execute sonar analysis for current branch + # Execute sonar analysis and publish results to the sonarcloud server - name: sonar-analyse - env: - SONAR_HOST: ${{ secrets.OS_SONAR_HOST_URL }} - SONAR_TOKEN: ${{ secrets.OS_SONAR_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | export SONAR_ORGANIZATION=$(echo ${GITHUB_REPOSITORY} | cut -d / -f 1) - mvn sonar:sonar \ - -Dsonar.host.url=${SONAR_HOST} \ - -Dsonar.login=${SONAR_TOKEN} \ - -Dsonar.organization=${SONAR_ORGANIZATION} \ - -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} \ - -Dsonar.pullrequest.key=${{ github.event.number }} \ + mvn org.sonarsource.scanner.maven:sonar-maven-plugin:5.5.0.6356:sonar \ + -Dsonar.host.url=${{ secrets.OS_SONAR_HOST_URL }} \ + -Dsonar.token=${{ secrets.OS_SONAR_TOKEN }} \ + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \ -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} \ - -Dsonar.pullrequest.github.repository=${GITHUB_REPOSITORY} \ + -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} \ -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} \ - -Dsonar.java.binaries=./target/classes + -Dsonar.organization=${SONAR_ORGANIZATION} \ + -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} # Execute Maven enforcer plugin - name: pom-analyse diff --git a/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java b/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java index 27e6d02..a565b5d 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/SpringRabbitAutoConfigurationForMultipleConnectionFactoriesIT.java @@ -131,8 +131,8 @@ private void checkQueues() assertEquals(1, queueZeroDlx.getDeclaringAdmins().size()); assertEquals(firstRabbitAdmin, queueZeroDlx.getDeclaringAdmins().iterator().next()); assertEquals(2, queueZeroDlx.getArguments().size()); - assertEquals(Long.valueOf(50), queueZeroDlx.getArguments().get("x-max-length")); assertEquals("quorum", queueZeroDlx.getArguments().get(X_QUEUE_TYPE)); + assertEquals(Long.valueOf(50), queueZeroDlx.getArguments().get("x-max-length")); // queueOne assertEquals("com.avides.spring.rabbit.queue.one", queueOne.getName()); From 3bb5e39b30b74916d61c36a5ee81b2b4c5d4e8fd Mon Sep 17 00:00:00 2001 From: Finn Egbers Date: Wed, 1 Jul 2026 10:25:22 +0200 Subject: [PATCH 03/17] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../rabbit/configuration/creator/DlxQueueCreatorTest.java | 2 +- .../spring/rabbit/configuration/creator/QueueCreatorTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java b/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java index 33b7739..b362561 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/creator/DlxQueueCreatorTest.java @@ -165,7 +165,7 @@ public void testCreateInstanceWithNotExclusive() } @Test - public void testCreateInstanceWithOverridenQueueType() + public void testCreateInstanceWithOverriddenQueueType() { rabbitAdmin.declareQueue(anyObject(Queue.class)); expectLastCall().andAnswer(() -> diff --git a/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java b/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java index 502a40c..16cdf3a 100644 --- a/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java +++ b/src/test/java/com/avides/spring/rabbit/configuration/creator/QueueCreatorTest.java @@ -90,7 +90,7 @@ public void testCreateInstance() } @Test - public void testCreateInstanceWithOverridenQueueType() + public void testCreateInstanceWithOverriddenQueueType() { rabbitAdmin.declareQueue(anyObject(Queue.class)); expectLastCall().andAnswer(() -> From de2b76e82134d7cace7348baed4f50382a3e0438 Mon Sep 17 00:00:00 2001 From: fegbers Date: Wed, 1 Jul 2026 10:37:15 +0200 Subject: [PATCH 04/17] RC build --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be9c44b..491f5a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - master + - LIBRARIES-1638 jobs: release: From 1b520a87cd01d6de81729ac01d4af7a67e5df375 Mon Sep 17 00:00:00 2001 From: avides-builds Date: Wed, 1 Jul 2026 08:37:33 +0000 Subject: [PATCH 05/17] Update GitHub Action configuration --- .github/workflows/nightly.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 1f4622a..4ca1bbb 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -80,4 +80,4 @@ jobs: -Dsonar.projectVersion=${PROJECT_VERSION} \ -Dsonar.branch.name=master \ -Dsonar.organization=${SONAR_ORGANIZATION} \ - -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} \ + -Dsonar.projectKey=${GITHUB_REPOSITORY//\//_} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 491f5a2..be9c44b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - LIBRARIES-1638 + - master jobs: release: From 436445708e0f0984537f5fffd17f6b20bd11e46d Mon Sep 17 00:00:00 2001 From: fegbers Date: Thu, 2 Jul 2026 23:59:44 +0200 Subject: [PATCH 06/17] fixes --- .github/workflows/release.yml | 2 +- pom.xml | 20 -------------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be9c44b..491f5a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - master + - LIBRARIES-1638 jobs: release: diff --git a/pom.xml b/pom.xml index 1d51cda..8e63c4a 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,6 @@ 3.0.0-M1 1.11.2 0.3.0 - 1.4.0 1.6.12 ${spring.version} @@ -467,25 +466,6 @@ - - de.jutzig - github-release-plugin - ${github-release-plugin.version} - - - github-upload - deploy - - release - - - ${project.version} - ${project.version} - ${project.build.directory}/${project.artifactId}-${project.version}.jar - - - - org.sonatype.plugins nexus-staging-maven-plugin From 8536874ce1419401a203fc6cf6980f9785adbaf9 Mon Sep 17 00:00:00 2001 From: avides-builds Date: Thu, 2 Jul 2026 21:59:59 +0000 Subject: [PATCH 07/17] Update GitHub Action configuration --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 491f5a2..be9c44b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - LIBRARIES-1638 + - master jobs: release: From 7376190c91395df6a9e17bb83f407969d5f0b0db Mon Sep 17 00:00:00 2001 From: fegbers Date: Fri, 3 Jul 2026 00:18:04 +0200 Subject: [PATCH 08/17] fix --- pom.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 8e63c4a..b6336e5 100644 --- a/pom.xml +++ b/pom.xml @@ -59,8 +59,9 @@ 3.0.0-M3 3.0.0-M1 1.11.2 - 0.3.0 - 1.6.12 + 0.6.0 + 1.4.0 + 0.7.0 ${spring.version} 5.3.15 @@ -467,15 +468,14 @@ - org.sonatype.plugins - nexus-staging-maven-plugin - ${nexus-staging-maven-plugin.version} + org.sonatype.central + central-publishing-maven-plugin + ${central-publishing-maven-plugin.version} true - ossrh - https://oss.sonatype.org/ - true - ${skip-deploy-to-central} + true + published + ${skip-deploy-to-central} From 06ad47107871b51744c321b39bd1c021a39fdd29 Mon Sep 17 00:00:00 2001 From: fegbers Date: Fri, 3 Jul 2026 00:18:55 +0200 Subject: [PATCH 09/17] RC build --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be9c44b..491f5a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - master + - LIBRARIES-1638 jobs: release: From 02d000c7de30c03e3123e245b185d6d0fcbf07b8 Mon Sep 17 00:00:00 2001 From: avides-builds Date: Thu, 2 Jul 2026 22:19:24 +0000 Subject: [PATCH 10/17] Update GitHub Action configuration --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 491f5a2..be9c44b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - LIBRARIES-1638 + - master jobs: release: From 55e46268bbe7e6868c9a7974402083221c04e3a3 Mon Sep 17 00:00:00 2001 From: fegbers Date: Fri, 3 Jul 2026 06:03:07 +0200 Subject: [PATCH 11/17] fix central version -> new RC build --- .github/workflows/release.yml | 2 +- pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be9c44b..491f5a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - master + - LIBRARIES-1638 jobs: release: diff --git a/pom.xml b/pom.xml index b6336e5..b6ccb30 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.avides.spring spring-rabbit - 3.0.0-RC1 + 3.0.0-RC2 spring-rabbit Makes configuring RabbitMQ for Spring Boot applications more comfortable @@ -61,7 +61,7 @@ 1.11.2 0.6.0 1.4.0 - 0.7.0 + 0.11.0 ${spring.version} 5.3.15 From f115f66b194facefae5a977da5feafa0c9cc3e49 Mon Sep 17 00:00:00 2001 From: avides-builds Date: Fri, 3 Jul 2026 04:03:21 +0000 Subject: [PATCH 12/17] Update GitHub Action configuration --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 491f5a2..be9c44b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: push: branches: # Runs only on push to the master branch - - LIBRARIES-1638 + - master jobs: release: From b1c39ef45b5437ba3e1ac7521bb3e71fcbcbc9d7 Mon Sep 17 00:00:00 2001 From: fegbers Date: Fri, 10 Jul 2026 11:54:06 +0200 Subject: [PATCH 13/17] new RC to fix sonarcloud connection --- .github/workflows/review.yml | 34 +++++++++++++++++----------------- README.md | 2 +- pom.xml | 3 +-- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 6ef1620..18c2454 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -25,22 +25,22 @@ jobs: ref: ${{ github.head_ref }} fetch-depth: 0 - # Update GitHub Action configuration if necessary - - name: action-configuration-autoupdate - uses: avides/actions-action-configuration-autoupdate@v2 - with: - token: ${{ secrets.GPR_TOKEN }} - actions-configuration-files: os-java-library/nightly.yml,os-java-library/release.yml,os-java-library/review.yml - source-repository: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_REPO }} - - # Push updated GitHub Actions configuration if necessary - - uses: stefanzweifel/git-auto-commit-action@v7 - with: - file_pattern: .github/workflows/*.yml - commit_user_name: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_USER }} - commit_user_email: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_EMAIL }} - commit_author: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_AUTHOR }} - commit_message: Update GitHub Action configuration +# # Update GitHub Action configuration if necessary +# - name: action-configuration-autoupdate +# uses: avides/actions-action-configuration-autoupdate@v2 +# with: +# token: ${{ secrets.GPR_TOKEN }} +# actions-configuration-files: os-java-library/nightly.yml,os-java-library/release.yml,os-java-library/review.yml +# source-repository: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_REPO }} +# +# # Push updated GitHub Actions configuration if necessary +# - uses: stefanzweifel/git-auto-commit-action@v7 +# with: +# file_pattern: .github/workflows/*.yml +# commit_user_name: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_USER }} +# commit_user_email: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_EMAIL }} +# commit_author: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_AUTHOR }} +# commit_message: Update GitHub Action configuration # Verify project version is updated - name: project-version-check @@ -126,7 +126,7 @@ jobs: export SONAR_ORGANIZATION=$(echo ${GITHUB_REPOSITORY} | cut -d / -f 1) mvn org.sonarsource.scanner.maven:sonar-maven-plugin:5.5.0.6356:sonar \ -Dsonar.host.url=${{ secrets.OS_SONAR_HOST_URL }} \ - -Dsonar.token=${{ secrets.OS_SONAR_TOKEN }} \ + -Dsonar.token=${{ secrets.OS_SONAR_TOKEN2 }} \ -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \ -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} \ -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} \ diff --git a/README.md b/README.md index ce356cb..2b57f76 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ com.avides.spring spring-rabbit - 3.0.0-RC1 + 3.0.0-RC3 ``` diff --git a/pom.xml b/pom.xml index b6ccb30..4211281 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.avides.spring spring-rabbit - 3.0.0-RC2 + 3.0.0-RC3 spring-rabbit Makes configuring RabbitMQ for Spring Boot applications more comfortable @@ -60,7 +60,6 @@ 3.0.0-M1 1.11.2 0.6.0 - 1.4.0 0.11.0 ${spring.version} From b77ae160264b75ca4bd1e85907e0df6897d35766 Mon Sep 17 00:00:00 2001 From: fegbers Date: Fri, 10 Jul 2026 13:03:17 +0200 Subject: [PATCH 14/17] release --- .github/workflows/review.yml | 32 ++++++++++++++++---------------- README.md | 2 +- pom.xml | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 18c2454..886c7fb 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -25,22 +25,22 @@ jobs: ref: ${{ github.head_ref }} fetch-depth: 0 -# # Update GitHub Action configuration if necessary -# - name: action-configuration-autoupdate -# uses: avides/actions-action-configuration-autoupdate@v2 -# with: -# token: ${{ secrets.GPR_TOKEN }} -# actions-configuration-files: os-java-library/nightly.yml,os-java-library/release.yml,os-java-library/review.yml -# source-repository: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_REPO }} -# -# # Push updated GitHub Actions configuration if necessary -# - uses: stefanzweifel/git-auto-commit-action@v7 -# with: -# file_pattern: .github/workflows/*.yml -# commit_user_name: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_USER }} -# commit_user_email: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_EMAIL }} -# commit_author: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_AUTHOR }} -# commit_message: Update GitHub Action configuration + # Update GitHub Action configuration if necessary + - name: action-configuration-autoupdate + uses: avides/actions-action-configuration-autoupdate@v2 + with: + token: ${{ secrets.GPR_TOKEN }} + actions-configuration-files: os-java-library/nightly.yml,os-java-library/release.yml,os-java-library/review.yml + source-repository: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_REPO }} + + # Push updated GitHub Actions configuration if necessary + - uses: stefanzweifel/git-auto-commit-action@v7 + with: + file_pattern: .github/workflows/*.yml + commit_user_name: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_USER }} + commit_user_email: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_EMAIL }} + commit_author: ${{ secrets.ACTIONS_CONFIG_AUTOUPDATE_AUTHOR }} + commit_message: Update GitHub Action configuration # Verify project version is updated - name: project-version-check diff --git a/README.md b/README.md index 2b57f76..46f37ce 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ com.avides.spring spring-rabbit - 3.0.0-RC3 + 3.0.0 ``` diff --git a/pom.xml b/pom.xml index 4211281..6d72f0e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.avides.spring spring-rabbit - 3.0.0-RC3 + 3.0.0 spring-rabbit Makes configuring RabbitMQ for Spring Boot applications more comfortable From d3c8ced027ecabe67143df4e685f7a120666d23e Mon Sep 17 00:00:00 2001 From: avides-builds Date: Fri, 10 Jul 2026 11:03:31 +0000 Subject: [PATCH 15/17] Update GitHub Action configuration --- .github/workflows/release.yml | 1 - .github/workflows/review.yml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be9c44b..7e4dca7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -115,4 +115,3 @@ jobs: tag_name: ${{ steps.get_project_version.outputs.version }} body: ${{ steps.setup_github_release.outputs.gitcommitmessage }} prerelease: ${{ steps.setup_github_release.outputs.isprerelease }} - files: target/*.jar diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 886c7fb..6ef1620 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -126,7 +126,7 @@ jobs: export SONAR_ORGANIZATION=$(echo ${GITHUB_REPOSITORY} | cut -d / -f 1) mvn org.sonarsource.scanner.maven:sonar-maven-plugin:5.5.0.6356:sonar \ -Dsonar.host.url=${{ secrets.OS_SONAR_HOST_URL }} \ - -Dsonar.token=${{ secrets.OS_SONAR_TOKEN2 }} \ + -Dsonar.token=${{ secrets.OS_SONAR_TOKEN }} \ -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \ -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} \ -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} \ From 61b1f887dd95863c5387f5e242d09e8117e624e3 Mon Sep 17 00:00:00 2001 From: fegbers Date: Fri, 10 Jul 2026 13:14:12 +0200 Subject: [PATCH 16/17] fixes --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6d72f0e..db05dc1 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,7 @@ - ossrh + central https://oss.sonatype.org/service/local/staging/deploy/maven2/ From 661a81f43f56acc4587e8b7fe6be86164b4f5012 Mon Sep 17 00:00:00 2001 From: avides-builds Date: Fri, 10 Jul 2026 11:14:38 +0000 Subject: [PATCH 17/17] Update GitHub Action configuration --- .github/workflows/review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 6ef1620..9263ed3 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -76,7 +76,7 @@ jobs: id: find_reminder_comment with: issue-number: ${{ github.event.number }} - body-includes: "Confluence/GitHub documentation added or updated?" + body-includes: "Documentation added or updated?" # Add reminder comment if not given - name: reminder-comment