SpringBoot整合RabbitMQ

[复制链接]
发表于 2026-1-14 14:38:11 | 显示全部楼层 |阅读模式
流程图概括



1.引入依靠
  1. <dependency>
  2.        <groupId>org.springframework.boot</groupId>
  3.        <artifactId>spring-boot-starter-amqp</artifactId>
  4. </dependency>
复制代码
2. 设置RabbitMQ毗连

在application.properties或application.yml中设置RabbitMQ服务器的毗连参数:

3.DirectExchange 直连型交换机

3.1消耗者
  1. @Configuration
  2. public class DirectConsumer {
  3.     //注册一个队列
  4.     @Bean  //启动多次为什么不报错?启动的时候,它会根据这个名称Direct_Q01先去查找有没有这个队列,如果有什么都不做,如果没有创建一个新的
  5.     public Queue queue(){
  6.       return   QueueBuilder.durable("Direct_Q01").maxLength(100).build();
  7.     }
  8.     //注册交换机
  9.     @Bean
  10.     public DirectExchange exchange(){
  11.         //1.启动的时候,它会根据这个名称Direct_E01先去查找有没有这个交换机,如果有什么都不做,如果没有创建一个新的
  12.         return  ExchangeBuilder.directExchange("Direct_E01").build();
  13.     }
  14.     //绑定交换机与队列关系
  15.     @Bean
  16.     public Binding binding(Queue queue,DirectExchange exchange){
  17.         return BindingBuilder.bind(queue).to(exchange).with("RK01");
  18.     }
  19.     //启动一个消费者
  20.     @RabbitListener(queues = "Direct_Q01")
  21.     public void receiveMessage(String msg){
  22.         System.out.println("收到消息:"+msg);
  23.     }
  24. }
复制代码
3.2生产者
  1. @Service
  2. public class DirectProvider {
  3.     @Autowired
  4.     private RabbitTemplate rabbitTemplate;
  5.     public void send(Object message) {
  6.         rabbitTemplate.convertAndSend("Direct_E01", "RK01", message);
  7.     }
  8. }
复制代码
3.3 一个交换机对多个队列的特点:


3.4 一个队列对多个消耗者特点:要包管消息的有序性肯定要一个消息队列只毗连一个消耗者


4.FanoutExchange

4.1 消耗者


4.2生产者


5.TopicExchange

5.1 消耗者


5.1 生产者



6.业务对象作为消息

6.1 自界说转换器(须要举行范例转换)
  1. @Configuration
  2. public class RabiitConfig {
  3.     @Bean // 将对象转化成json字符串
  4.     public MessageConverter  messageConverter(){
  5.         return new  Jackson2JsonMessageConverter();
  6.     }
  7. }
复制代码
6.2 消耗者直接继承业务对象
  1.     @RabbitListener(bindings=@QueueBinding(
  2.             value = @Queue(name = "Q01", durable = "true",autoDelete = "false",
  3.                     arguments = @Argument(name="x-queue-mode",value = "lazy")),
  4.             exchange =@Exchange(name = "E01", durable = "true",autoDelete = "false"),
  5.             key = "RK01"))
  6.     public void receiveMessage(RegisterOk registerOk){
  7.         System.out.println("消费者 收到消息:"+registerOk);
  8.         //新用户注册后,送100积分。
  9.       
  10.     }
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表