RabbitMQ

RabbitMQ之消息模式

我怕爱的太早我们不能终老 提交于 2020-02-29 01:50:36
文章目录 消息100%的投递 方案1一 消息落库,对消息状态进行打标 方案二 消息的延迟投递,做二次确认,回调检查 幂等性概念 Confirm确认消息 Return返回消息 自定义消费者 消息100%的投递 消息如何保障100%的投递成功? 什么是生产端的可靠性投递? 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker)确认应答 完善的消息进行补偿机制 BAT/TMD互联网大厂的解决方案: 消息落库,对消息状态进行打标 消息的延迟投递,做二次确认,回调检查 方案1一 消息落库,对消息状态进行打标 流程如下: 第1步:将订单入库,创建一条MSG(状态为0) 入MSG DB库 第2步:将消息发出去 第3步:监听消息应答(来自Broker) 第4步:修改消息的状态为1(成功) 第5步:分布式定时任务抓取状态为0的消息 第6步:将状态为0的消息重发 第7步:如果尝试了3次(可按实际情况修改)以上则将状态置为2(消息投递失败状态) 方案二 消息的延迟投递,做二次确认,回调检查 第1步:首先业务数据落库,成功才后第一次消息发送 第2步:紧着着发送第2条消息(可以用于寻找第1条消息),用于延迟(可能2,3分钟后才发送)消息投递检查 第3步:Broker端收到消息后,消费端进行消息处理 第4步:处理成功后,发送confirm消息 第5步:收到confirm消息后

RabbitMQ学习系列(六):RabbitMQ消息确认机制

被刻印的时光 ゝ 提交于 2020-02-28 22:15:17
(一)概述 rabbitmq在使用过程中会遇到一个问题:生产者将消息发送出去后,消息有没有达到rabbitmq,默认是不知道的。 有两种解决方式:1.AMQP实现事务机制;2.Confirm模式 (二)事务机制 事务机制通过三段代码控制事务的执行: 1 channel.txSelect(); 将当前channel设置成transaction 2 channel.txCommit(); 提交事务 3 channel.txRollback(); 事务回滚 如果生产者因为一些错误没有将事务发送出去,那就会触发事务回滚机制,以达到消息确认的目的。 通过简单队列实现事务机制: 生产者 public class Sent { private static final String QUEUE_NAME="tx_queue"; public static void main(String[] args) throws IOException, TimeoutException { Connection connection = ConnectionUtil.getConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME,false,false,false,null);

Mac RabbitMq的安装和使用

北战南征 提交于 2020-02-28 15:26:42
官网地址: http://www.rabbitmq.com/download.html 一、安装 1. homebrew安装 brew install rabbitmq 2.安装完成后 ==> Caveats Management Plugin enabled by default at http://localhost:15672 Bash completion has been installed to: /usr/local/etc/bash_completion.d To have launchd start rabbitmq now and restart at login: brew services start rabbitmq Or, if you don't want/need a background service you can just run: rabbitmq-server ==> Summary 🍺 /usr/local/Cellar/rabbitmq/3.8.2: 280 files, 20MB, built in 55 seconds ==> Caveats ==> erlang Man pages can be found in: /usr/local/opt/erlang/lib/erlang/man Access them with

RabbitMQ 整合 SpringCloud实战

泪湿孤枕 提交于 2020-02-28 10:27:22
RabbitMQ 整合 SpringCloud实战 RabbitMQ 整合 SpringCloud实战 rabbitmq-common 子项目 rabbitmq-springcloud-consumer 子项目 rabbitmq-springcloud-producer 子项目 RabbitMQ 整合 SpringCloud实战 注意一点,在发送消息的时候对 template 进行配置 mandatory=true 保证监听有效 生产端还可以配置其他属性,比如发送重试,超时时间、次数、间隔等 消费端核心配置: 首先配置手工确认模式,用于ACK的手工处理,这样我们可以保证消息的可靠性送达,或者在消费端消费失败的时候可以做到重回队列、根据业务记录日志等处理; 可以设置消费端的监听个数和最大个数,用于控制消费端的并发情况 @RabbitListener注解的使用: 消费端监听@RabbitListener注解,这个对于在实际工作中非常的好用 @RabbitListener是一个组合注解,里面可以注解配置(@QueueBinding、@Queue、@Exchange)直接通过这个组合注解一次性搞定消费端交换机、队列、绑定、路由、并且配置监听功能等 注:由于类配置写在代码里非常不友好,所以强烈建议大家使用配置文件配置 <ignore_js_op> rabbitmq-common 子项目

rabbitMQ的linux系统下的安装

末鹿安然 提交于 2020-02-28 07:35:28
安装rabbitMQ: 手工部署(注意:版本冲突) 系统平台:CentOS 7.3 rabbitmq版本:rabbitmq-server -3.6.6 erlang版本:erlang19.3 JDK版本:JDK1.8.0_121 安装依赖包: yum -y install make gcc gcc-c++ m4 ncurses-devel openssl-devel unixODBC-devel 在线源代码下载(网速比较慢): wget http://erlang.org/download/otp_src_19.3.tar.gz 安装 Erlang 第一步解压: tar xzf otp_src_19.3.tar.gz #解压 第二步安装运行环境 先 cd otp_src_19.3 下一步大概等十分钟左右 ./configure --prefix=/usr/local/erlang --enable-shared-zlib --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac make && make install 先下载rpm: wget http://www.rabbitmq.com/releases/rabbitmq

2020面试季即将来袭,你做好准备了吗?

梦想的初衷 提交于 2020-02-28 04:18:35
前言: 本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。 适宜阅读人群: 需要面试的初/中/高级 Java 程序员 想要查漏补缺的人 想要不断完善和扩充自己 Java 技术栈的人 Java 面试官 话不多说直接放题; Java 基础面试题 1. JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4. final 在 Java 中有什么作用? 5. Java 中的 Math.round(-1.5) 等于多少? 6. String 属于基础的数据类型吗? 7. Java 中操作字符串都有哪些类?它们之间有什么区别? 8. String str="i"与 String str=new String(“i”)一样吗? 9. 如何将字符串反转? 10. String 类的常用方法都有那些? 11. 抽象类必须要有抽象方法吗? 12. 普通类和抽象类有哪些区别? 13.

CentOS-Docker安装RabbitMQ集群

走远了吗. 提交于 2020-02-28 04:14:42
创建目录 $ mkdir -p /home/rabbitmq 三台机器分别配置创建 $ vim /home/rabbitmq/hosts 192.168.1.101 rabbit1 rabbit1 192.168.1.102 rabbit2 rabbit2 192.168.1.103 rabbit3 rabbit3 参数说明 #容器后台运行 -d #容器的主机名为 rabbit_master,容器内部的hostname --hostname rabbit_master #将宿主机目录/home/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用。 -v /home/rabbitmq:/var/lib/rabbitmq:z #设置rabbitmq的cookie可以自定义为其他文本,三个容器保持一致即可。 -e RABBITMQ_ERLANG_COOKIE='xxx_2019' 创建容器(rabbit1) $ docker run --restart=unless-stopped -h rabbit1 -d -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 4369:4369 --name myrabbit1 \ -v /home/rabbitmq:/var/lib/rabbitmq:z

Beats:使用Elastic Stack监控RabbitMQ

旧巷老猫 提交于 2020-02-28 02:31:50
RabbitMQ是一个开放源消息代理,创建于2007年以实现AMQP,并且在过去的十二年中,通过不断增加的插件列表,它已包括HTTP,STOMP,SMTP和其他协议。它也是Kafka的一个强劲的竞争者。在今天的文章中,我们将详述如何使用Elastic Stack来监控RabbitMQ。 RabbitMQ简介 RabbitMQ是消息队列软件,也称为消息代理或队列管理器。 简单地说; 它是定义队列的软件,应用程序连接到该队列以传输一条或多条消息。 一条消息可以包含任何种类的信息。 例如,它可能具有有关应在另一个应用程序(甚至可能在另一个服务器上)上启动的过程或任务的信息,或者可能只是一条简单的文本消息。 队列管理器软件存储消息,直到接收应用程序连接并从队列中取出消息为止。 接收应用程序然后处理该消息。 消息队列的基本体系结构很简单-有一些称之为生产者(producers)的客户端应用程序,它们可以创建消息并将其传递到代理(消息队列)。 其他应用程序(称为消费者,也即consumers)连接到队列并订阅要处理的消息。 软件可以充当消息的生产者或消费者,或者既充当消息的消费者又充当生产者。 存储在队列中的消息将被存储,直到消费者检索到它们为止。 在下面我们来具体介绍如何使用Elastic Stack来把我们想要的RabbitMQ日志导入到Elastic Stack中,并对日志进行分析。

RabbitMq 命令

☆樱花仙子☆ 提交于 2020-02-27 23:48:48
rabbitmqadmin 命令无效,安装方法: wget http://xxx:15672/cli/rabbitmqadmin 可下载rabbtimqadmin脚本 chmod +x rabbitmqadmin 装时rabbitmq并未加入系统服务,所以启动时进入安装路径 ./rabbitmq-server -detached 或者 sudo rabbitmqctl start_app 此时如果rabbitmq-server stop会无法停止,报节点已经启动 需用 rabbitmqctl stop_app 停止erlang上的node 启动: rabbitmq-server start rabbitmqadmin 命令汇总: 命令 解释 rabbitmqadmin list users 查看所有用户 User rabbitmqadmin list users name 查看所有用户名 Username rabbitmqadmin list users tags 查看所有用户角色 rabbitmqadmin list vhosts 查看所有虚拟主机 rabbitmqadmin list connections 查看所有连接 rabbitmqadmin list exchanges 查看所有路由 Exchange rabbitmqadmin list bindings

CentOS-Docker安装RabbitMQ(单点)

妖精的绣舞 提交于 2020-02-27 19:28:44
这里注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面。 获取镜像 $ docker pull rabbitmq:management 运行镜像 $ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management 或 $ docker run --restart=unless-stopped -d -p 5672:5672 -p 15672:15672 --name rabbitmq -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management 访问管理界面 访问管理界面的地址就是 http://[宿主机IP]:15672,没指定用户名密码默认的账户guest/guest 创建指定配置文件RabbitMQ $ mkdir -p /home/rabbitmq/lib /home/rabbitmq/etc /home/rabbitmq/log $ docker cp -a rabbitmq:/var/lib/rabbitmq /home/rabbitmq/lib/ $