![](https://img-blog.csdnimg.cn/8e37245ea6e941c6a2c5360cdaffd19f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
RabbitMQ
文章平均质量分 53
RabbitMQ
Black_Me_Bo
最长的路也有尽头,最黑暗的夜晚也会迎接清晨。
展开
-
09-SpringAMQP-消息转换器
消息转换器 Spring会把消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。 默认情况下Spring采用的序列化方式是JDK序列化。众所周知,JDK序列化存在下列问题: 数据体积过大 有安全漏洞 可读性差 测试JDK默认转换器 我们修改消息发送的代码,发送一个Map对象: @Test public void testSendMap() throws InterruptedException { // 准备消息 Map<String,Object>原创 2022-02-11 21:33:21 · 196 阅读 · 0 评论 -
08-SpringAMQP-TopicExchange(发布订阅)
TopicExchange(主题模式) 说明 Topic类型的Exchange与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符! Routingkey 一般都是有一个或多个单词组成,多个单词之间以.分割,例如: bttc.insert 通配符规则: #:匹配一个或多个词 *:匹配1个词 举例: item.#:能够匹配item.spu.insert 或者 item.spu item.*:只能原创 2022-02-11 21:15:43 · 109 阅读 · 0 评论 -
07-SpringAMQP-DirectExchange(发布订阅)
DirectExchange(路由模式) Direct Exchange 会将接收到的消息根据规则路由到指定的Queue,因此称为路由模式(routes)。 每一个Queue都与Exchange设置一个BindingKey 发布者发送消息时,指定消息的RoutingKey Exchange将消息路由到BindingKey与消息RoutingKey一致的队列 基于注解声明队列和交换机 @RabbitListener(bindings = @QueueBinding( value = @Queu原创 2022-02-11 21:15:00 · 89 阅读 · 0 评论 -
06-SpringAMQP-FanoutExchange(发布/订阅)
发布/订阅 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是发给交换机 Exchange:交换机。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。 Exchange有以下3种类型: Fanout:广播,将消息交给所有绑定到交换机的队列 Direct:定向,把消息交给符合指定routing k原创 2022-02-11 20:41:29 · 180 阅读 · 0 评论 -
05-SpringAMQP-WorkQueue
WorkQueue Work queues,也被称为(Task queues),任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。 当生产者生产消息速度圆圆大于消息消费速度,消息会出现堆积的情况,此时就可以用work模型,多个消费者共同处理消息,苏打会大大提高。 Work模型的使用: 多个消费者绑定到一个队列,同一条消息只会被一个消费者处理 通过设置prefetch来控制消费者预取的消息数量 消息发送 在publisher服务中的SpringAmqpTest类中添加一个测试方法:原创 2022-02-11 20:40:20 · 359 阅读 · 0 评论 -
04-SpringAMQP-Base Queue
SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: 自动声明队列、交换机及其绑定关系 基于注解的监听器模式,异步接收消息 封装了RabbitTemplate工具,用于发送消息 Basic Queue 简单队列模型 在项目中引入依赖 <!--AMQP依赖,包原创 2022-02-11 20:39:56 · 444 阅读 · 0 评论 -
03-RabbitMQ入门
RabbitMQ入门 安装RabbitMQ 参考:https://editor.csdn.net/md/?articleId=122882190 RabbitMQ的结构和概念 RabbitMQ中的一些角色: publisher:生产者 consumer:消费者 exchange:交换机,负责消息路由 queue:队列,存储消息 virtualHost:虚拟主机,隔离不同租户的exchange、queue、消息的隔离 RabbitMQ消息模型 基本消息队列 工作消息队列 根据交换机类型不同又划分三种原创 2022-02-11 16:51:51 · 603 阅读 · 0 评论 -
02-RabbitMQ安装
单机安装 下载镜像 在线拉取 docker pull rabbitmq:3-management 从本地加载 下载好镜像压缩包,上传到服务器然后使用命令加载镜像即可 docker load -i MQ.tar 安装RabbitMQ 执行下面的命令来运行MQ容器: docker run \ -e RABBITMQ_DEFAULT_USER=blackme \ -e RABBITMQ_DEFAULT_PASS=123456 \ --name mq \ --hostname mq1 \ -p 156原创 2022-02-11 15:46:51 · 68 阅读 · 0 评论 -
01-MQ入门
MQ入门 同步通讯和异步通讯 同步通讯:需要实时响应 异步通讯:不需要马上响应 两种方式各有优劣,同步通讯可以立即得到响应,但是你却不能跟服务同时通讯。异步通讯可以同时与多服务通讯,但是往往响应会有延迟。 同步通讯 Feign的调用就是属于同步通讯 弊端: 耦合度高:每次加入新的需求,都要修改原来的代码 性能下降:调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和。 资源浪费:调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源 级联失败:如原创 2022-02-11 15:36:02 · 648 阅读 · 0 评论