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
This commit is contained in:
Dave Syer 2015-07-13 14:57:31 +01:00
parent 67933ab01f
commit ff79138aa5
2 changed files with 0 additions and 27 deletions

View File

@ -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;
}

View File

@ -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;
}
}
}