diff --git a/spring-modulith-observability/pom.xml b/spring-modulith-observability/pom.xml
index e0695dd2..f3cf61db 100644
--- a/spring-modulith-observability/pom.xml
+++ b/spring-modulith-observability/pom.xml
@@ -99,6 +99,12 @@
test
+
+ org.springframework.amqp
+ spring-rabbit
+ test
+
+
diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java
index 510c4a64..53cab561 100644
--- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java
+++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java
@@ -33,6 +33,7 @@ import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.core.Ordered;
import org.springframework.modulith.runtime.ApplicationModulesRuntime;
import org.springframework.util.Assert;
@@ -42,7 +43,7 @@ import org.springframework.util.Assert;
*
* @author Oliver Drotbohm
*/
-public class ModuleTracingBeanPostProcessor extends ModuleTracingSupport implements BeanPostProcessor {
+public class ModuleTracingBeanPostProcessor extends ModuleTracingSupport implements BeanPostProcessor, Ordered {
public static final String MODULE_BAGGAGE_KEY = "org.springframework.modulith.module";
@@ -70,6 +71,15 @@ public class ModuleTracingBeanPostProcessor extends ModuleTracingSupport impleme
this.factory = factory;
}
+ /*
+ * (non-Javadoc)
+ * @see org.springframework.core.Ordered#getOrder()
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.LOWEST_PRECEDENCE - 50;
+ }
+
/*
* (non-Javadoc)
* @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String)
diff --git a/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java b/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java
index 42fe2745..747dcabe 100644
--- a/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java
+++ b/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.*;
import example.sample.SampleProperties;
import org.junit.jupiter.api.Test;
+import org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.modulith.runtime.ApplicationModulesRuntime;
@@ -50,4 +51,15 @@ class ModuleTracingBeanPostProcessorUnitTests {
assertThat(result).isSameAs(bean);
}
+
+ @Test // GH-936
+ void processorIsRegisteredBefore() {
+
+ var rabbitProcessor = new RabbitListenerAnnotationBeanPostProcessor();
+ var tracingProcessor = new ModuleTracingBeanPostProcessor(mock(ApplicationModulesRuntime.class), () -> null,
+ new DefaultListableBeanFactory());
+
+ assertThat(rabbitProcessor.getOrder()).isGreaterThan(tracingProcessor.getOrder());
+
+ }
}