添加RabbitMQ依赖
创建application.yml,内容如下:
spring:
rabbitmq:
host: 你的ip
port: 5672
virtual-host: /你的虚拟主机名
username: admin
password: admin
2. 绑定交换机和队列
创建RabbitMQ队列与交换机绑定的配置类
com.potota.rabbitmq.config.RabbitMQConfig
package com.potato.rabbitmq.config;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
public class RabbitMQConfig {
//交换机名称
public static final String TOPIC_EXCHANGE = "boot_topic_exchange";
//队列名称
public static final String BOOT_Queue = "boot_queue";
//声明交换机
@Bean("topicExchange")
public Exchange topicExchange() {
return ExchangeBuilder.topicExchange(TOPIC_EXCHANGE).durable(true).build();
}
//声明队列
@Bean("queue")
public Queue queue(){
return QueueBuilder.durable(BOOT_Queue).build();
}
//绑定队列和交换机
@Bean
public Binding queueExchange(@Qualifier("queue") Queue queue,
@Qualifier("topicExchange") Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs();
}
}
3. 搭建消费者工程
创建消费者工程springboot-consumer
并添加依赖
spring:
rabbitmq:
host: 你的ip
port: 5672
virtual-host: /你的虚拟主机名
username: admin
password: admin
2. 消息监听处理类
package com.potato.rabbitmq.listener;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MyListener {
@RabbitListener(queues = "boot_queue")
public void ListenerQueue(Message message) {
System.out.println("消费者接收到的消息为:" + message);
}
}
3. 测试
在生产者工程springboot-producer中创建测试类,发送消息:
package com.potato.springbootrqbbitmq;
import com.potato.rabbitmq.config.RabbitMQConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProduceTest {
//注入,RabbitTemplate rabbitTemplate
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void test() {
rabbitTemplate.convertAndSend(RabbitMQConfig.TOPIC_EXCHANGE, "item.insert", "商品新增,routing key 为item.insert");
// rabbitTemplate.convertAndSend(RabbitMQConfig.TOPIC_EXCHANGE,"item.bbb","routing key 为item.bbb");
// rabbitTemplate.convertAndSend(RabbitMQConfig.TOPIC_EXCHANGE,"item.ccc","routing key 为item.ccc");
System.out.println("信息发送成功");
}
}
先运行上述测试程序(交换机和队列才能先被声明和绑定),然后启动消费者;在消费者工程springboot-consumer中控制台查看是否接收到对应消息。
另外;也可以在RabbitMQ的管理控制台中查看到交换机与队列的绑定:



