当我尝试使用 Apache Camel 组件的 Spring RabbitMQ 将消息从一个队列发布到另一个队列时,目标队列没有收到任何消息。
@Component
public class WeatherRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
fromF(RABBIT_URI,"weather","weather")
.toF(RABBIT_URI,"weather_event","weather_event")
}
}
这是我的配置组件:
@Configuration
public class CamelConfiguration {
public static final String RABBIT_URI="spring-rabbitmq:amq.direct?exchangeType=direct&queues=%s&routingKey=%s";
@Bean
// auto injected because we name it with rabbitConnectionFactory
public ConnectionFactory rabbitConnectionFactory() {
//define a connectionFactory
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest");
return factory;
}
}
我已经使用 RabbitMQ 接口手动创建了两个队列,但问题仍然存在
RabbitMQ 的 Apache Camel URI 看起来没有
queues
参数:https://camel.apache.org/components/3.21.x/rabbitmq-component.html.
我建议使用不同的 URI:对于基于
queue
的消费者端和基于 routingKey
的生产者端。这就是 AMQP 协议的工作原理。