楔子
预告了本篇的内容:利用RabbitTemplate和注解进行收发消息,还有一个我临时加上的内容:消息的序列化转换。
本篇会和SpringBoot做整合,采用自动配置的方式进行开发,我们只需要声明RabbitMQ地址就可以了,关于各种创建连接关闭连接的事都由Spring帮我们了~
交给Spring帮我们管理连接可以让我们专注于业务逻辑,就像声明式事务一样易用,方便又高效。
1. 🔍环境配置
第一节我们先来搞一下环境的配置,上一篇中我们已经引入了自动配置的包,我们既然使用了自动配置的方式,那RabbitMQ
的连接信息我们直接放在配置文件中就行了,就像我们需要用到JDBC连接的时候去配置一下DataSource
一样。
如图所示,我们只需要指明一下连接的IP+端口号和用户名密码就行了,这里我用的是默认的用户名与密码,不写的话默认也都是guest,端口号也是默认5672。
主要我们需要看一下手动确认消息的配置,需要配置成manual
才是手动确认,日后还会有其他的配置项,眼下我们配置这一个就可以了。
接下来我们要配置一个Queue
,上一篇中我们往一个名叫erduo
的队列中发送消息,当时是我们手动定义的此队列,这里我们也需要手动配置,声明一个Bean
就可以了。
@Configuration
public class RabbitmqConfig {
@Bean
public Queue erduo() {
// 其三个参数:durable exclusive autoDelete
// 一般只设置一下持久化即可
return new Queue("erduo",true);
}
}
复制代码
就这么简单声明一下就可以了,当然了RabbitMQ
毕竟是一个独立的组件,如果你在RabbitMQ
中通过其他方式已经创建过一个名叫erduo
的队列了,你这里也可以不声明,这里起到的一个效果就是如果你没有这个队列,会按照你声明的方式帮你创建这个队列。
配置完环境之后,我们就可以以SpringBoot的方式来编写生产者和消费者了。
2. 📕生产者与RabbitTemplate
和上一篇的节奏一样,我们先来编写生产者,不过这次我要引入一个新的工具:RabbitTemplate
。
听它的这个名字就知道,又是一个拿来即用的工具类,Spring家族这点就很舒服,什么东西都给你封装一遍,让你用起来更方便更顺手。
RabbitTemplate
实现了标准AmqpTemplate接口,功能大致可以分为发送消息和接受消息。
我们这里是在生产者中来用,主要就是使用它的发送消息功能:send
和convertAndSend
方法。
// 发送消息到默认的Exchange,使用默认的routing key
void send(Message message) throws AmqpException;
// 使用指定的routing key发送消息到默认的exchange
void send(String routingKey, Message message) throws AmqpException;
// 使用指定的routing key发送消息到指定的exchange
void send(String exchange, String routingKey, Message message) throws AmqpException;
复制代码
send
方法是发送byte数组的数据的模式,这里代表消息内容的对象是Message
对象,它的构造方法就是传入byte数组数据,所以我们需要把我们的数据转成byte数组然后构造成一个Message
对象再进行发送。
// Object类型,可以传入POJO
void convertAndSend(Object message) throws AmqpException;
void convertAndSend(String routingKey, Object message) throws AmqpException;
void convertAndSend(String exchange, String routingKey, Object message) throws AmqpException;
复制代码
convertAndSend
方法是可以传入POJO对象作为参数,底层是有一个MessageConverter
帮我们自动将数据转换成byte类型或String或序列化类型。
所以这里支持的传入对象也只有三种:byte类型,String类型和实现了Serializable
接口的POJO。文章来源:https://www.toymoban.com/news/detail-698527.html
介绍完了,我们可以看一下代码:文章来源地址https://www.toymoban.com/news/detail-698527.html
@Slf4j
@Component("rabbitProduce")
public class RabbitProduce {
@A
到了这里,关于一文带你如何用SpringBoot+RabbitMQ方式来收发消息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!