springboot集成RabbitMQ

本文详细介绍了如何使用RabbitMQ进行消息传递,包括安装配置、依赖加入、消息发送与接收、序列化配置及监听设置。同时,深入探讨了交换器、队列的创建与删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ是一个由erlang开发的AMQP的开源实现

安装好RabbitMQ之后
登录进入
  第一步,先创建exchanges
  第二步,创建querus
  第三步,创建exchanges和querus交互的路游键

大概理解步骤
   生产者创建消息发送到exchanges(交换器)上,交换器根据路由键绑定的querus(消息队列), 将消息发送到消息队列上,最后消费者接收消息

1.加入依赖
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
2.在配置文件配置rabbitmq
    #配置rabbitmq
  spring.rabbitmq.host=localhost
  spring.rabbitmq.username=guest
  spring.rabbitmq.password=guest
  spring.rabbitmq.port=5672
3.为了发送的消息为json格式,而不是jdk默认的序列化方式,配置rabbitmq配置类,
  /**
 * 配置rabbit接收消息序列化方式,默认为jdk序列化
 * @author Administrator
 *
 */
@Configuration
public class RabbitConfig {
     @Bean
     public MessageConverter getMessageConverter(){
          
          return new Jackson2JsonMessageConverter();
     }
}
4.发送的消息得到监听,需在主程序上开启基于注解的rabbimq
@EnableRabbit
@SpringBootApplication
public class Springboot009RabbitMqApplication {
     public static void main(String[] args) {
          SpringApplication.run(Springboot009RabbitMqApplication.class, args);
     }
}
5.测试发送消息
 //发送direct类型消息
     @Test
     public void sendDirectMessage() {
          //交换器
          String exchange="exchanges.direct";
          //路游键
          String routingKey="athexunews";
          //消息,发送的格式是jdk默认序列化,而不是json格式
          Map<String,Object> map=new HashMap<String, Object>();
          map.put("msg", "这是测试的消息");
          map.put("status", "success");
          map.put("putUser", "何旭");
          rabbitTemplate.convertAndSend(exchange, routingKey, map);
     }
6.监听方法会自动监听到发送的消息并接收
@Controller
public class RabbimqListener {
     
     @Autowired
     private RabbitTemplate rabbitTemplate;
     /*
      * 监听athexunews的消息队列
      * queues:消息队列名称
      */
     @RabbitListener(queues="athexunews")
     public void listenerMessage(Map<String,Object> msg){
     //   Object msg = rabbitTemplate.receiveAndConvert("athexunews");
          System.out.println("收到消息:"+msg);
     }
}



--------------------------------------------------------------创建和删除exchenges,querus---------------------------------
@Autowired
private AmqpAdmin amqpAdmin;//管理组件
//创建交换器,队列,绑定规则
     @Test
     public void createExchangesQuerus(){
          //exchanges四种:direct(默认的)
          amqpAdmin.declareExchange(new DirectExchange("createExchanges"));
          //创建队列
          amqpAdmin.declareQueue(new Queue("createqueues",true));//true为持久化
          //需要绑定到那个exchanges才能使用
          amqpAdmin.declareBinding(new Binding("createqueues",DestinationType.QUEUE, "createExchanges", "springbootcreatequeues.luyou", null));
     }
     //删除建交换器,队列,绑定规则
     @Test
     public void delExchangesQuerus(){
          amqpAdmin.declareBinding(new Binding("createqueues",DestinationType.QUEUE, "createExchanges", "springbootcreatequeues.luyou", null));
          amqpAdmin.deleteExchange("createExchanges");
          amqpAdmin.deleteQueue("createqueues");
     }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hexu_blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值