Spring项目中RabbitMq的使用(工作队列模式)

实现步骤:

1. 引入依赖

2. 编写基本的配置信息

3. 编写生产者代码

4. 编写消费者代码


引入依赖


如代码:

复制代码
<!--Spring MVC相关依赖--> 
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
</dependency>
<!--RabbitMQ相关依赖--> 
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

在这里我们也可以直接在创建项目的直接引入。

如图:


修改yml配置文件


如代码:

复制代码
#配置RabbitMQ的基本信息 
spring:
 rabbitmq:
 host: 110.41.51.65
 port: 15673 #默认为5672 
 username: study
 password: study
 virtual-host: bite #默认值为 /

注意上面的host一定要改成自己云服务器的主机IP。


编写生产者代码


在常量类中声明队列模式。

如代码:

复制代码
//work模式队列名称 
public static final String WORK_QUEUE = "work_queue";

@Configuration
public class RabbitMQConfig {
 //1. ⼯作模式队列 
 @Bean("workQueue")
 public Queue workQueue() {
 return QueueBuilder.durable(Constants.WORK_QUEUE).build();
 }
}

编写生产者代码:

复制代码
​
@RequestMapping("/producer")
@RestController
public class ProducerController {
 @Autowired
 private RabbitTemplate rabbitTemplate;
 @RequestMapping("/work")
 public String work(){
    for (int i = 0; i < 10; i++) {
 //使⽤内置交换机发送消息, routingKey和队列名称保持⼀致 
       rabbitTemplate.convertAndSend("", Constants.WORK_QUEUE, "hello 
       spring amqp: work...");
   }
     return "发送成功";
  }
}

​

如上述代码所示,通过依赖注入的rabbitTemplate,通过这个对象我们可以直接调用,spring内部封装好的方法,直接发送消息。


编写消费者代码


如代码:

复制代码
@Component
public class WorkListener {
 @RabbitListener(queues = Constants.WORK_QUEUE)
 public void listenerQueue(Message message){
      System.out.println("listener 1["+Constants.WORK_QUEUE+"]收到消息:" + 
   message);
  }
 @RabbitListener(queues = Constants.WORK_QUEUE)
 public void listenerQueue2(Message message){
     System.out.println("listener 2["+Constants.WORK_QUEUE+"]收到消息:" + 
   message);
  }
}

@RabbitListener 是Spring框架中用于监听RabbitMQ队列的注解,通过使用这个注解,可以定 义⼀个方法,以便从RabbitMQ队列中接收消息。该注解支持多种参数类型,这些参数类型代表了从 RabbitMQ接收到的消息和相关信息.

相关推荐
梅头脑2 小时前
交易跨10个库、日均千万订单——选错一次分布式事务方案,加班三个月重写
java·分布式
霸道流氓气质4 小时前
分布式系统中接口时序不确定性处理
java·开发语言·分布式
YOU OU6 小时前
Redis分布式锁
数据库·redis·分布式
小罗水8 小时前
第9章 RabbitMQ 消息队列与索引任务
分布式·rabbitmq
naierfengdian10 小时前
分布式风力发电机机抗风扰、稳发电结构设计技术解析
分布式·能源
wWYy.19 小时前
基于Raft分布式Kv存储:sendRequestVote
分布式
笨鸟先飞的橘猫1 天前
游戏后端分布式学习——消息队列在游戏的用法
分布式·学习·游戏
Wang's Blog1 天前
Go-Zero项目开发40: 基于Jaeger的分布式链路跟踪实战
开发语言·分布式·golang
wWYy.1 天前
基于Raft分布式Kv存储:sendAppendEntries
分布式
范什么特西1 天前
关于kafka
分布式·kafka