MQ
mischen520
JAVA高级架构师
展开
-
RabbitMQ如何确保消息发送 ? 消息接收?
发送方确认机制:信道需要设置为 confirm 模式,则所有在信道上发布的消息都会分配一个唯一 ID。一旦消息被投递到queue(可持久化的消息需要写入磁盘),信道会发送一个确认给生产者(包含消息唯一ID)。如果 RabbitMQ 发生内部错误从而导致消息丢失,会发送一条 nack(未确认)消息给生产者。所有被发送的消息都将被 confirm(即 ack) 或者被nack一次。但是没有对消息被 confirm 的快慢做任何保证,并且同一条消息不会既被 confirm又被nack发送方确认模式是异原创 2022-07-08 08:25:14 · 695 阅读 · 0 评论 -
docker容器中部署RabbitMQ集群模式
1、集群形式RabbitMQ是用Erlang语言开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。RabbitMQ集群中节点包括内存节点(RAM)、磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点。普通模式(默认)对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。应用场景:该模式适合于消息无需持久原创 2022-01-27 08:49:12 · 579 阅读 · 0 评论 -
消息丢失、重复、积压等常见解决方案
如何保证消息可靠性-消息丢失1.消息丢失–消息发送出去,由于网络问题没有抵达服务器.做好容错方案(try-catch),发送消息可能会有网络失败,失败后要有重试机制。可记录到数据库,采用定期扫描重发的方式.做好日志记录,每个消息状态是否都被服务器收到都应该记录.做好定期重发,如果消息没有发送成功,定期去数据库扫描未成功的消息进行重发–消息抵达Broker,Broker要将消息写入磁盘(持久化)才算成功。此时Broker尚未持久化完成,宕机。.publisher也必须加入确认回调机制,确认成功的原创 2021-12-11 20:34:57 · 1366 阅读 · 0 评论 -
如何保证消息的可靠性?
分布式事务常见解决方案-最终一致性原创 2021-12-11 20:33:01 · 614 阅读 · 0 评论 -
说说几种常见的消息中间件的区别?
中小型公司⾸首选RabbitMQ:管理理界⾯面简单,高并发。大型公司可以选择RocketMQ:更⾼高并发,可对rocketmq进行定制化开发。日志采集功能,首选kafka,专为⼤大数据准备。原创 2021-10-19 20:59:21 · 267 阅读 · 0 评论 -
MQ如何保证分布式事务的最终一致性
分布式事务:业务相关的多个操作,保证他们同时成功或者同时失败最终一致性:与之对应的就是强一致性MQ中要保证事务的最终一致性,就需要做到两点1.生产者要保证100%的消息投递。事务消息机制2.消费者这一端需要保证幂等消费。唯一ID+业务自己实现的幂等分布式MQ的三种语义:at least onceat most onceexactly once:RocketMQ并不能保证exactly once。商业版本当中提供了exactly once的实现机制。Kafka:在最新版本的源码当中,提供了e原创 2021-10-19 20:47:23 · 3016 阅读 · 0 评论 -
在centos7上部署raabitmq详细步骤
安装rabbitmq 3.6.12,当前为止,最新的rabbitmq的版本1、安装编译工具yum install -y ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-develyum install -y openssl-devel...原创 2019-06-22 20:48:01 · 242 阅读 · 0 评论 -
kafka和rabbitmq的对比和选择
kafka 的开发语言是scala,Java,kafka 2.x.x支持多租户,不支持topic优先级,不支持消息全局有序,支持消息分区有序,无内置监控,不支持消息追踪,不支持消费者推模式,支持事务性消息,通过zookeeper进行管理,支持控制用户和客户端流量,默认服务端口是9200,默认监控端口kafka web console 9000;kafka manager 9000,网络开销、内存消...原创 2019-06-30 15:21:10 · 908 阅读 · 0 评论