RabbitMQ入门篇

简介: 来到docker官网找一个带management的版本,https://hub.docker.com/_/rabbitmq然后下载、运行

一、安装rabbitmq并在管理页创建交换器和队列以及绑定

来到docker官网找一个带management的版本,https://hub.docker.com/_/rabbitmq

然后下载、运行

20200919161319831.png


访问服务器ip:15672,使用默认用户名和密码 guest进行登录

20200919161425347.png


创建三个自定义交换器,headers类型不推荐了

20200919162946509.png



然后创建几个队列

20200919163246800.png


然后选择交换器,绑定队列,需要注意的是direct类型的Routing key需要完全匹配,fanout类型不需要匹配Routing key,topic类型需要进行模糊匹配,*代表一个词,#代表0个或多个

20200919163421284.png

topic类型的绑定如下

20200919163915284.png


发送消息

20200919164944373.png


二、创建项目并测试发送与接受消息


选择web和rabbitmq依赖就行了

20200919170706645.png


配置文件里配置下host啥的

20200919170751376.png


然后写个测试,发送一条消息试试

20200919170953929.png


非常的nice,它直接报错了,然后把put方法拿出来写,它好了,这里原理暂时不太懂,先不深究

20200919171920647.png


它默认使用的是jdk序列化

20200919172047832.png


为了方便观察,改成json格式吧,使用这个转换器

rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());


也可以写个配置类替换

package com.example.amqp.config;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @author baikunlong
 * @date 2020/9/19 19:06
 */
@Configuration
public class MyAMQPConfig {
    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}


20200919171746358.png


运行发送方法,再运行接受方法即可看到消息,在这里接收后,消息就被消费了

20200919172941664.png


在网页查看需要选择第二项才能消费掉消息

20200919173046553.png


在启动类使用@EnableRabbit注解开启基于注解的RabbitMQ模式,写一个service,使用@RabbitListener注解监听消息队列

package com.example.amqp.service;
import com.example.amqp.bean.Book;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
/**
 * @author baikunlong
 * @date 2020/9/19 19:24
 */
@Service
public class BookService {
    @RabbitListener(queues = "bkl.news")
    public void receive(Book book){
        System.out.println("收到消息了:"+book);
    }
}


然后运行测试类的发送消息方法,即可收到消息,这里的交换器类型为fanout,即所有队列都会收到这条消息

20200919193326152.png


要获取MessageProperties把入参改成Message即可

    @RabbitListener(queues = "bkl")
    public void receive(Message message){
        System.out.println("message.getBody():"+ message.getBody());
        System.out.println("message.getMessageProperties():"+message.getMessageProperties());
    }


三、使用AmqpAdmin动态创建交换器和队列

    @Resource
    AmqpAdmin amqpAdmin;
    @Test
    void createExchange(){
        amqpAdmin.declareExchange(new DirectExchange("amqpAdmin.exchange.direct"));
        System.out.println("创建Exchange成功");
        amqpAdmin.declareQueue(new Queue("amqpAdmin.queue"));
        System.out.println("创建队列成功");
        amqpAdmin.declareBinding(new Binding("amqpAdmin.queue", Binding.DestinationType.QUEUE,
                "amqpAdmin.exchange.direct","amqbAdmin.xxx",null));
        System.out.println("绑定amqpAdmin.exchange.direct到amqpAdmin.queue");
    }


成功的创建了交换器和队列并绑定了在一起

20200919200520593.png

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
1月前
|
消息中间件 Java Kafka
RabbitMQ 入门
RabbitMQ 入门
|
3月前
|
消息中间件 存储 Java
分享一下rocketmq入门小知识
分享一下rocketmq入门小知识
51 0
分享一下rocketmq入门小知识
|
4月前
|
消息中间件 新零售 弹性计算
云消息队列 RabbitMQ 版入门训练营,解锁对比开源优势与零基础实战
欢迎加入「云消息队列 RabbitMQ 版入门训练营」。
167 15
|
3月前
|
网络协议 物联网 测试技术
App Inventor 2 MQTT拓展入门(保姆级教程)
本文演示的是App和一个测试客户端进行消息交互的案例,实际应用中,我们的测试客户端可以看着是任意的、支持MQTT协议的硬件,通过订阅及发布消息,联网硬件与我们的App进行双向数据通信,以实现万物互联的智能控制效果。
198 2
|
4月前
|
消息中间件
云消息队列RabbitMQ版入门训练营 打卡领好礼
云消息队列RabbitMQ版入门训练营 打卡领好礼
56 3
|
3月前
|
消息中间件
快来体验 消息队列RabbitMQ版入门训练营 打卡学习领好礼
快来体验 消息队列RabbitMQ版入门训练营 打卡学习领好礼
62 0
EMQ
|
6月前
|
安全 网络性能优化
MQTT 5.0 报文(Packets)入门指南
MQTT 控制报文是 MQTT 数据传输的最小单元。MQTT 客户端和服务端通过交换控制报文来完成它们的工作,比如订阅主题和发布消息。
EMQ
705 9
MQTT 5.0 报文(Packets)入门指南
|
5月前
|
消息中间件 存储 Kafka
01.RabbitMQ入门
01.RabbitMQ入门
56 0
|
5月前
|
消息中间件 存储 前端开发
RabbitMQ在Java中的完美实现:从入门到精通
本文由木头左介绍如何在Java项目中使用RabbitMQ。RabbitMQ是开源的AMQP实现,支持多种客户端,适合分布式系统中的消息传递。首先需安装Erlang和RabbitMQ,接着在Java项目中添加RabbitMQ客户端库依赖。通过创建连接工厂和连接,建立与RabbitMQ的通信,并展示了创建连接和通道的代码示例。
|
6月前
|
消息中间件 Docker 微服务
RabbitMQ入门指南(十一):延迟消息-延迟消息插件
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了DelayExchange插件、延迟消息插件实现延迟消息等内容。
966 0