【RabbitMQ | 第三篇】Springboot整合RabbiMQ

在这里插入图片描述

3.Springboot整合RabbitMQ

  • 引入amqp依赖场景;RabbitAutoCon>figuration就会自动生
  • 给容器中自动配置了RabbitTemplate、AmqpAdmin、CachingConnectionFactory、RabbitMessagingTemplate
  • @EnableRabbit:(在创建交换机,队列时可以不需要,发送消息可以不需要这个注解,监听消息必须使用这个注解)

3.1导入依赖

        <!--rabbitmq-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

3.2xml配置

spring:
  rabbitmq:
    host: 192.168.234.133
    port: 5672
    virtual-host: /

3.3开启rabbitmq相关功能

@EnableRabbit

3.4整合测试

3.4.1认识RabbitmqAutoConfiguration

里面自动注入的组件

RabbitTeamplate:用于发送消息
AmqpAdmin:需要一个连接对象
CachingConnectionFactory:连接创建工厂
RabbitMessagingTemplate:操作消息的类
首先就是创建AmqpAdmin,并且这个时候需要配置一下连接工厂的配置信息,主要就是host、port和virtual-host虚拟主机

3.4.2创建exchange、queue、binding

参数

  • exchange:name、durable(持久化)、autodelete(自动删除)
  • queue:name、durable、excusive(排他,其它连接是否能够传输信息进来)、autodelete
	@Test
    void exchange() {
        //注意,创建交换机就指定了交换机的类型为direct
        DirectExchange directExchange = new DirectExchange("hello.java.exchange",true,false);
        amqpAdmin.declareExchange(directExchange);
    }

    @Test
    void queue() {
        Queue queue = new Queue("hello.java.queue",true,false,true);
        amqpAdmin.declareQueue(queue);
    }

    @Test
    void binding() {
        Binding binding = new Binding("hello.java.queue", Binding.DestinationType.QUEUE,"hello.java.exchange","hello",new HashMap<>());
        amqpAdmin.declareBinding(binding);
    }

3.4.3发送消息

思路

①第一个就是要知道在传送消息的时候是需要依靠模板rabbitTemplate,它里面有一个messageConverter,这个转换器主要就是能够把消息变成对应的形式。通常用的是simple,这个转换器就是序列化转换成byte数组来传输,但是我们可以增加自己配置一个Json的Config转换器。发送消息用的是json状态

②接着就是通过模板来发送

@Configuration
public class MyRabbitConfig {

    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}

发送消息用例:

	@Autowired
    RabbitTemplate rabbitTemplate;

    @Test
    public void sendMessage(){
        MemberResVo memberResVo = new MemberResVo();
        memberResVo.setCity("sss");
        memberResVo.setId(123L);
        /**
        *	 参数如下:交换机名称、消息的路由键、消息内容、(消息的唯一id:new CorrelationData(UUID.randomUUID().toString))
        */
        rabbitTemplate.convertAndSend("hello.java.exchange","hello",memberResVo);
    }

3.4.4接收消息

思路

①开启注解EnableRabbit才能够使用@RabbitListener来监听,并且指定监听队列可以是多个。

②然后就发送消息进行测试

RabbitHandler主要只能对方法起作用,@RabbitListener类和方法都可以,但是handler有利于方法的重载:用于接收不同类型的消息

在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

来自梦里的一条鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值