Commit ff79138a authored by Dave Syer's avatar Dave Syer

Alternative fix for Rabbit listener transactions

Never inject a transaction manager (user can create his own
"rabbitListenerContainerFactory" bean if he wants an actual
non-JTA transaction manager.

See gh-3432
parent 67933ab0
......@@ -20,12 +20,10 @@ import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.amqp.rabbit.config.RabbitListenerConfigUtils;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
/**
* Configuration for Spring AMQP annotation driven endpoints.
......@@ -37,19 +35,12 @@ import org.springframework.transaction.PlatformTransactionManager;
@ConditionalOnClass(EnableRabbit.class)
class RabbitAnnotationDrivenConfiguration {
@Autowired(required = false)
private PlatformTransactionManager transactionManager;
@Bean
@ConditionalOnMissingBean(name = "rabbitListenerContainerFactory")
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
ConnectionFactory connectionFactory, RabbitProperties config) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
if (this.transactionManager != null
&& config.getListener().isUseTransactionManager()) {
factory.setTransactionManager(this.transactionManager);
}
return factory;
}
......
......@@ -62,12 +62,6 @@ public class RabbitProperties {
*/
private String addresses;
private Listener listener = new Listener();
public Listener getListener() {
return this.listener;
}
public String getHost() {
if (this.addresses == null) {
return this.host;
......@@ -162,16 +156,4 @@ public class RabbitProperties {
this.virtualHost = ("".equals(virtualHost) ? "/" : virtualHost);
}
public static class Listener {
private boolean useTransactionManager = false;
public boolean isUseTransactionManager() {
return this.useTransactionManager;
}
public void setUseTransactionManager(boolean useTransactionManager) {
this.useTransactionManager = useTransactionManager;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment