【发布时间】:2019-05-23 05:44:07
【问题描述】:
我收到以下错误:
没有找到唯一的服务匹配接口org.springframework.amqp.rabbit.connection.ConnectionFactory
说明:
- RabbitMQ 在开发服务器上运行 Pivotal Cloud Foundry 平台。
- 在 PCF 平台上,没有 RabbitMQ 服务(市场)
- Springboot App 使用
spring-cloud-starter-bus-amqp连接RabbitMQ。 - 如果 Springboot App 在本地运行,一切都会按预期运行
- 但是,当
cf pushSpringboot App to PCF时,出现上述异常。 - 根本原因是PCF使用自动配置
RabbitServiceAutoConfiguration.CloudProfile.CloudConnectors.UseCloudConnectors创建rabbitmqConnectionFactory,当然失败了,因为我的PCF空间根本没有RabbitMQ服务。
问题:如何配置 Springboot App 并且可以顺利部署到 PCF 上?
我尝试了什么...(如下),但没有成功。
@Profile("cloud")
@Configuration
@EnableConfigurationProperties(RabbitmqInfo.class)
@Slf4j
public class RabbitmqConfig extends AbstractCloudConfig {
@Bean
public ConnectionFactory rabbitmqConnectionFactory(@Autowired RabbitmqInfo rabbitmq) {
CachingConnectionFactory factory = new CachingConnectionFactory();
factory.setHost(rabbitmq.getHost());
factory.setPort(rabbitmq.getPort());
factory.setUsername(rabbitmq.getUsername());
factory.setPassword(rabbitmq.getPassword());
log.info("[*] rabbitmqConnectionFactory uses CachingConnectionFactory");
log.info("[*] rabbitmq.host: {}", factory.getHost());
return factory;
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory rabbitmqConnectionFactory) {
return new RabbitTemplate(rabbitmqConnectionFactory);
}
}
我的build.gradle 依赖项:
...
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-bus-amqp', version: '2.1.1.RELEASE'
...
堆栈跟踪:
s.c.a.AnnotationConfigApplicationContext :上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.BeanCreationException:在 org.springframework.cloud.stream.binder.rabbit.config 中创建名称为“rabbitConnectionFactory”的 bean 时出错。 RabbitServiceAutoConfiguration$CloudProfile$CloudConnectors$UseCloudConnectors:通过工厂方法进行 Bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.springframework.amqp.rabbit.connection.ConnectionFactory]:工厂方法“rabbitConnectionFactory”抛出异常;嵌套异常是 org.springframework.cloud.CloudException: No unique service matching interface org.springframework.amqp.rabbit.connection.ConnectionFactory found。预期 1,找到 0
感谢您的宝贵时间。
【问题讨论】:
标签: spring-boot rabbitmq amqp pcf