消息队列MQ

简介: 消息队列MQ

MQ消息队列

MQ面试目标

什么是MQ、为什么用MQ
结合实际项目讲自己用过的案例
rabbitmq/rocketmq/activemq/kafka什么区别,分别适用什么场景,怎么结合自己的业务去技术选型

MQ学习笔记

image.png

ActiveMQ在成熟度比较优秀,但是它的性能方面比较欠缺,所以在吞吐量不太高的中小型企业比较受欢欢迎;

Kafka追求高吞吐量,一般应用在大数据,一开始目的用于日志收集和传输,它不支持事务、不追求消息传递的可靠性,所以根据业务需求自行判断是否合适;

RocketMQ纯java开发,起源kafka,并不是复制kafka,基于kafka的缺点方面做了优化,比如可靠性方面,阿里对它的开源版本不支持事务,只有付费云产品才支持事务,它在阿里众多业务场景下经过不断的优化得到了逐步的完善;

RabbitMQ是Erlang语言开发的开源消息队列,基于AMQP协议实现,AMQP协议的特点的可靠性、安全性比较好,基于它的性能和可靠性以及开源社区活跃的结合考量,得到了众多企业的青睐。

AMQP和JMS的本质差别:JMS是基于API层面的限定,而AMQP是定义网络交换的数据格式

image.png

image.png

虚拟主机的作用:类似数据库中的库概念,同一个rabbitmq服务端下可以创建多个虚拟主机,便于供不同场景或不同项目共用同一服务端

提供rabbitmq的连接信息中包括了连接的用户账号和密码,而在服务端可以通过命令方式或者web管理界面中对用户的权限和虚拟主机进行管理,这样就便于程序知道连接至rabbitmq后从哪个虚拟主机中生产和消费消息

据了解可以省略交换机的模式,直接将消息放置于队列queue中

创建消费者demo代码示例(添加AMQP客户端依赖、服务端的虚拟主机/用户的创建/用户权限的设置、代码连接服务端、发布消息):

https://www.bilibili.com/video/BV1dE411K7MG?p=5&spm_id_from=pageDriver

官方示例的几种消费模型

https://www.rabbitmq.com/getstarted.html

image.png

image.png

  • work queues:没有交换机
  • 订阅模式:fanout,有交换机,所有消费者无条件/无过滤的接受广播
  • routing:direct,有交换机,队列绑定路由key,在交换机中根据路由key获取指定消息
  • topic:基于direct的功能,可以使用通配符,简化过滤规则

image.png

集群

主从复制集群:不可靠,从节点只能在队列看到队列信息,无法正常使用队列信息,如果主节点宕机,整个系统不可用

镜像集群:实际上就是rabbitmq提供的策略模式,基于主从设置策略后达到自动/手动同步,实现高可用

学习MQ疑问

怎么改端口?(默认服务端口5672/默认web管理界面端口15672/集群的端口25672)

相关实践学习
消息队列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
目录
相关文章
|
2月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
24天前
|
消息中间件 存储 Java
【揭秘】RocketMQ内部运作大揭秘:一探究竟,原来消息队列是这样工作的!
【8月更文挑战第19天】RocketMQ是一款高性能、高可用的消息中间件,在分布式系统中至关重要。它采用发布/订阅模式,支持高吞吐量的消息传递。核心组件包括管理元数据的NameServer、存储消息的Broker以及Producer和Consumer。RocketMQ支持发布/订阅与点对点两种模型,并具备复杂的消息持久化和路由机制。通过Java API示例,可轻松实现消息的发送与接收。RocketMQ凭借其出色的特性和可靠性,成为大型分布式系统首选的消息解决方案。
45 5
|
1月前
|
消息中间件 存储 缓存
一个用过消息队列的人,竟不知为何要用 MQ?
一个用过消息队列的人,竟不知为何要用 MQ?
64 1
|
2月前
|
消息中间件 Java 物联网
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ操作报错合集之建立连接时发生了超时错误,该如何解决
|
27天前
|
消息中间件 网络架构
RabbitMQ消息队列常见面试题
这篇文章总结了RabbitMQ的常见面试题,涵盖了消息模型、使用场景、实现功能、消息幂等性、顺序性、堆积和丢失的避免方法,以及推模式和拉模式的区别。
38 0
|
28天前
|
消息中间件 Java Kafka
MQ 消息队列 比较
MQ 消息队列 比较
28 0
|
2月前
|
消息中间件 JavaScript Linux
消息队列 MQ操作报错合集之客户端在启动时遇到了连接错误,是什么原因
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
消息中间件 Java 开发工具
消息队列 MQ使用问题之如何使用DefaultMQPushConsumer来消费消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
消息中间件 运维 Go
消息队列 MQ使用问题之如何配置生产环境
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。

相关产品

  • 云消息队列 MQ