27、springboot整合RabbitMQ(1)

RabbitMQ整合

使用dockers下载带management的版本,该版本是带web界面的,可操作性比较强

启动

 
第二个-p是web界面的访问地址
 
客户端进行访问:

 

账号密码均是guest

 看图进行设置:

 

1、添加exchange(交换器):

全部添加之后

2、添加队列

3、绑定

........

4、发送消息

........

 

再队列中查看消息

工程中进行整合

新建工程:

1、自动配置的类

 

1.1、---有自动配置了连接工厂

 

1.2、---基本的 配置类

 封装了RabbitMq的所有配置

自动配置的配置类

1.3、---RabbitTemplate 给RabbitMq发送和接受消息

1.4---AmqpAdmin  系统管理功能组件

1.5---消息

 

需要将消息序列化成数组

2、单波

2.1、发送消息
@Autowired
RabbitTemplate rabbitTemplate;

//单播(点对点)
@Test
public void contextLoads() {
    //message需要自己定义,定义消息体和消息头
    //rabbitTemplate.send(exchage,routKey,message);

    //默认当成消息体,只需要将传入要发送的对象,自动序列化发送给rabbitmq
    //rabbitTemplate.convertAndSend(xchage,routKey,message);

    Map<String,Object> map = new HashMap<>();
    map.put("msg","这是IDEA整合的测试");

    //对象默认序列化以后发送
    rabbitTemplate.convertAndSend("exchange.direct",
            "atguigu.news",map);
}
用于rabbitTemplate.send(exchage,routKey,message);
运行在web界面进行查看结果!!!

此时这个队列已经接收到消息

2.2、接受消息

接受之后消息信道的消息就会消失!!!

2.3、如何以json的方式进行显示

可以自己写一个自定义的

 

新建一个配置类

@Configuration
public class MyAMQPConfig {
    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}
再次进行测试
此时过去的就是json数据类型

此时也可以进行消息的接受消息
也可以进行反序列化

 

测试对象:

public class Book {
    private  String name;
    private int  price;
    public Book() {
    }
    public Book(String name, int price) {
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
}

接收到信息

 

此时是可以拿到数据以及类型,此时可以做强转!!!!

3.广播
//广播
@Test
public void sengMsg(){
    rabbitTemplate.convertAndSend("exchange.fanout","",new Book("三国",32));
}
此时的routKey可以不写,因为是广播
 
此时查看队列

所有的信道都会收到消息!!!

原文地址:https://www.cnblogs.com/Mrchengs/p/10442093.html