1.RabbitMQ介绍
RabbitMQ是基于Erlang语言开发的开源消息通信中间件,是一个高性能的异步通讯组件
官网地址:RabbitMQ官网
2.MQ技术对比
RabbitMQ | ActiveMQ | RocketMQ | Kafka | |
---|---|---|---|---|
公司 | Rabbit | Apache | 阿里 | Apache |
开发语言 | Erlang | Java | Java | Scala&Java |
协议支持 | AMQP、XMPP、SMTP、STOMP | OpenWire、STOMP、REST、XMPP、AMQP | 自定义协议 | 自定义协议 |
可用性 | 高 | 一般 | 高 | 高 |
单机吞吐量 | 一般 | 差 | 高 | 非常高 |
消息延迟 | 微妙级 | 毫秒级 | 毫秒级 | 毫秒以内 |
消息可靠性 | 高 | 一般 | 高 | 一般 |
3.RabbitMQ的整体架构及核心概念
(1)消息发送者(publisher)
(2)消息消费者(consumer)
(3)队列(queue):存储消息
(4)交换机(exchange):负责路由和转发消息
(5)虚拟主机(Virtual host):实现数据隔离
4.work Queues(任务模型)
(1)模型作用
就是让多个消费者绑定到一个队列,共同消费队列中的消息,可以加快消息处理速度
(2)模型规则
同一条消息只会被一个消费者处理
(3)模型设置
默认情况下,RabbitMQ会将消息一次轮询投递给绑定在队列上的每一个消费者。但这并没有考虑到消费者是否已经处理完消息,可能出现消息堆积。因此我们需要修改配置文件,设置preFetch值为1,确保同一时刻最多投递给消费者1条消息
spring:
# RabbitMQ相关配置
rabbitmq:
# 配置虚拟主机名称
virtual-host: system1
# RabbitMQ管理端口号:15672;服务端口号:5672
port: 5672
# 配置使用者的名称和密码
username: guest
password: guest
# 配置消费服务器托管网者信息
listener:
simple:
# 设置每个监听者只能获取一条消息,处理完成才能获取下服务器托管网一条消息;作用:能者多劳
prefetch: 1
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
关于35岁的就业挑战 这篇文章跟朋友们聊些35岁发展的话题。都说35岁的中年人不如狗,网上又是铺天盖地的贩卖35岁中年焦虑各种割韭菜,再加上不稳定的外部环境,种种因素叠加确实会增加中年人的戾气和焦躁。 最近,我看到了一个关于罗振宇老师谈论35岁失业问题的视频,…