spring-rabbitmq 交换机绑定队列
时间: 2023-09-30 16:04:58 浏览: 127
在 Spring Boot 中使用 RabbitMQ 时,我们可以通过在配置文件中配置绑定关系,将交换机和队列进行绑定。具体步骤如下:
1. 在 application.properties 或 application.yml 中配置 RabbitMQ 连接信息:
```
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
```
2. 创建一个交换机和一个队列,并将它们绑定在一起:
```
@Configuration
public class RabbitConfig {
@Bean
public Queue queue() {
return new Queue("myqueue", true);
}
@Bean
public DirectExchange exchange() {
return new DirectExchange("myexchange");
}
@Bean
public Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("mykey");
}
}
```
3. 在需要发送消息的地方,注入 RabbitTemplate 并调用 convertAndSend 方法:
```
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String message) {
rabbitTemplate.convertAndSend("myexchange", "mykey", message);
}
```
4. 在需要接收消息的地方,注入 SimpleMessageListenerContainer 并实现 MessageListener 接口:
```
@Autowired
private Queue queue;
@Bean
public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queue.getName());
container.setMessageListener(listenerAdapter);
return container;
}
@Bean
public MessageListenerAdapter listenerAdapter() {
return new MessageListenerAdapter(new MyMessageListener());
}
public class MyMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
String body = new String(message.getBody());
System.out.println("Received message: " + body);
}
}
```
通过以上步骤,我们就可以实现交换机和队列的绑定,以及在队列中发送和接收消息。
阅读全文