简介
在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQ,尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可,方便的使用发送消息,使用注解接收消息。
一般在开发过程中:
生产者工程:
application.yml文件配置RabbitMQ相关信息;
在生产者工程中编写配置类,用于创建交换机和队列,并进行绑定
注入RabbitTemplate对象,通过RabbitTemplate对象发送消息到交换机
消费者工程:
application.yml文件配置RabbitMQ相关信息
创建消息处理类,用于接收队列中的消息并进行处理
搭建生产者工程
创建工程
创建生产者工程springboot_rabbitmq_producer,工程坐标如下:
<artifactId>springboot_rabbitmq_producer</artifactId>
<groupId>cn.com.javakf</groupId>
<version>1.0-SNAPSHOT</version>
pom文件引入以下依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
启动类
创建启动类cn.com.javakf.rabbitmq.Application,代码如下:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
配置RabbitMQ
(1)application.yml配置文件
创建application.yml,内容如下:
spring:
rabbitmq:
host: 192.168.80.131
port: 5672
virtual-host: javakf
username: admin
password: admin
(2)绑定交换机和队列
创建RabbitMQ队列与交换机绑定的配置类
@Configuration
public class RabbitMQConfig {
/***
* 声明交换机
*/
@Bean(name = "itemTopicExchange")
public Exchange topicExchange() {
return ExchangeBuilder.topicExchange("item_topic_exchange").durable(true).build();
}
/***
* 声明队列
*/
@Bean(name = "itemQueue")
public Queue itemQueue() {
return QueueBuilder.durable("item_queue").build();
}
/***
* 队列绑定到交换机上
*/
@Bean
public Binding itemQueueExchange(@Qualifier("itemQueue") Queue queue,
@Qualifier("itemTopicExchange") Exchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("item.#").noargs();
}
}
搭建消费者工程
创建工程
创建消费者工程springboot_rabbitmq_consumer,工程坐标如下:
<artifactId>springboot_rabbitmq_consumer</artifactId>
<groupId>cn.com.javakf</groupId>
<version>1.0-SNAPSHOT</version>
pom文件引入以下依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
启动类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
配置RabbitMQ
创建application.yml,内容如下:
spring:
rabbitmq:
host: 192.168.80.131
port: 5672
virtual-host: javakf
username: admin
password: admin
消息监听处理类
@Component
public class MessageListener {
/**
* 监听某个队列的消息
*
* @param message 接收到的消息
*/
@RabbitListener(queues = "item_queue")
public void myListener1(String message) {
System.out.println("消费者接收到的消息为:" + message);
}
}
测试
在生产者工程springboot-rabbitmq-producer中创建测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitMQTest {
// 用于发送MQ消息
@Autowired
private RabbitTemplate rabbitTemplate;
/***
* 消息生产测试
*/
@Test
public void testCreateMessage() {
rabbitTemplate.convertAndSend("item_topic_exchange", "item.insert", "商品新增,routing key 为item.insert");
rabbitTemplate.convertAndSend("item_topic_exchange", "item.update", "商品修改,routing key 为item.update");
rabbitTemplate.convertAndSend("item_topic_exchange", "item.delete", "商品删除,routing key 为item.delete");
}
}
先运行上述测试程序(交换机和队列才能先被声明和绑定),然后启动消费者;在消费者工程springboot_rabbitmq_consumer中控制台查看是否接收到对应消息。
另外;也可以在RabbitMQ的管理控制台中查看到交换机与队列的绑定:
原文链接:https://blog.csdn.net/weixin_45730091/article/details/102779945