我们使用Spring AMQP客户端连接到我们的RabbitMQs,我们的Spring Config定义为
<bean id="nativeCF" class="com.rabbitmq.client.ConnectionFactory" p:connection-timeout="#{msgProps['messaging.amqp.connection.timeout.millis']?:30000}"
p:socket-factory-ref="rabbitSslSocketFactory" p:automatic-recovery-enabled="true" p:topologyRecoveryEnabled="false"/>
<rabbit:connection-factory id="connectionFactory" host="#{msgProps['messaging.amqp.host']}"
username="#{msgProps['messaging.amqp.username']}" password="#{propertyEncryptor.decrypt(msgProps['messaging.amqp.password'])}"
port="#{msgProps['messaging.amqp.port']}" requested-heartbeat="#{msgProps['messaging.amqp.heartbeat']?:600}"
channel-cache-size="#{msgProps['messaging.amqp.channel.cache.size']?:150}" connection-factory="nativeCF"/>
我想覆盖amqp.rabbit.CachingConnectionFactory并在配置中自动装配它。 想知道如何继续。
答案 0 :(得分:0)
为什么你需要这样做?如果你直接使用本机连接工厂,你将无法获得Spring提供的功能,那么为什么要使用Spring呢?
也就是说,只要您使用正确的类型声明自动变量变量,就可以注入原生连接工厂。
使用Spring的本机客户端自动恢复没有任何好处; Spring AMQP已经(并且一直有)自己的恢复机制,早于amqp-client恢复。
答案 1 :(得分:0)
Spring无法将com.rabbitmq.client.ConnectionFactory
自动装入声明为org.springframework.amqp.rabbit.connection.ConnectionFactory
的字段(或其他方式) - 这两个字段不兼容。您需要使用正确的类型声明要自动装配的字段,您应该得到您想要的。
也许您打算将该字段声明为com.rabbitmq.client.ConnectionFactory
但是您错误地获得了Spring类型 - 请检查您的导入。