RabbitMQ 是一种基于erlang语言开发的消息中间件
1.springboot整合步骤:
1.1 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
1.2 编写配置文件
spring:
rabbitmq:
host: 192.168.2.156
port: 5672
username: rabbit
password: 123456
virtual-host: nz1905
1.3 创建生产者 消费者 如下:
2.RabbitMQ的工作模式:
2.1 简单模式
编写配置类 创建队列
@Configuration
public class MyRabbitConfig {
//创建队列
@Bean
public Queue getQueue(){
return new Queue("simple_queue");
}
}
生产者
@Component
public class MyProvider {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String message){
//发送消息 到指定队列中
rabbitTemplate.convertAndSend("simple_queue",message);
}
}
消费者
@Component
public class MyConsumer {
//监听指定的队列 发现有消息就输出
@RabbitListener(queues = "simple_queue")
public void process(String message){
System.out.println("这里是消费者,接受到消息: "+message);
}
}
2.2 广播模式(FanoutExchange)
1)生产者
生产者配置文类
@Component
public class RabbitMQConfig {
//生产者 配置交换机
@Bean
public FanoutExchange getFFanoutExchange(){
return new FanoutExchange("fanout_exchange",true,false,null);
}
}
生产者
@Component
public class MyProvider {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String message){
//向指定的交换机 发送消息
rabbitTemplate.convertAndSend("fanout_exchange","",message);
}
}
- 消费者
消费者配置类
@Configuration
public class RabbitMQConfig {
//创建消费者队列
@Bean
public Queue getQueue(){
return new Queue("fanout_queue");
}
//消费者交换机 与生产者交换机保持一致
@Bean
public FanoutExchange getFFanoutExchange(){
return new FanoutExchange("fanout_exchange",true,false,null);
}
//交换机绑定队列
@Bean
public Binding getBinding(Queue queue, FanoutExchange exchange){
return BindingBuilder.bind(queue).to(exchange);
}
}
消费者
@Component
public class MyConsumer {
@RabbitListener(queues = "fanout_queue")
public void process(String message){
System.out.println("这里是消费者,接受到的消息是:"+message);
}
}
2.3 路由模式(DirectExchange)
1)生产者 配置类
@Component
public class RabbitMQConfig {
//生产者 配置交换机 注意:交换机模式为 DirectExchange
@Bean
public DirectExchange getFFanoutExchange(){
return new DirectExchange("direct_exchange",true,false,null);
}
}
生产者
@Component
public class MyProvider2 {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String message){
//cat 指定路由
rabbitTemplate.convertAndSend("direct_exchange","cat",message);
}
}
2)消费者 配置类
@Configuration
public class RabbitMQConfig1 {
//创建消费者队列
@Bean
public Queue getQueue(){
return new Queue("direct_queue");
}
//消费者交换机 与生产者交换机保持一致 注意:交换机模式为 DirectExchange
@Bean
public DirectExchange directExchange(){
return new DirectExchange("direct_exchange",true,false,null);
}
//交换机绑定队列
@Bean
public Binding getBinding(Queue queue, DirectExchange directExchange){
return BindingBuilder.bind(queue).to(directExchange).with("cat");
}
}
消费者
@Component
public class MyConsumer {
@RabbitListener(queues = "direct_queue")
public void process(String message){
System.out.println("这里是消费者,接受到的消息是:"+message);
}
}













网友评论