RabbitMQ学习笔记
pan_joy
不在沉默中爆发,就在沉默中死亡,不在黑暗中发光,就在黑暗中消亡。-----自立自强
展开
-
RabbitMQ简介
MQ技术简介:MQ全称为MessageQueue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接彼此调用来通信,直接调用诸如远程过程调用(RPC)技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。原创 2016-01-24 21:43:31 · 928 阅读 · 0 评论 -
rabbitmq集群搭建
集群概述 通过 Erlang 的分布式特性(magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本文中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能转载 2016-10-14 11:28:14 · 1163 阅读 · 0 评论 -
RabbitMQ3.5.0版本之后关于RabbitMQ实现队列优先级
RabbitMQ到3.5.0版本实现队列 优先级RabbitMQ到3.5.0版本之前,官方没有实现优先级队列,只实现了Consumer的优先级处理。但是社区已经有相关优先级队列插件了,并且这个插件被列在RabbitMQ官方网站中了。RabbitMQ3.5.0之后官方版本已经实现了优先级队列。数值越大则优先级越高。Java代码设置队列优先级Channel ch = ...;Map原创 2016-03-01 09:53:09 · 5958 阅读 · 5 评论 -
RabbitMQ消息应答------ack机制
Message acknowledgment(消息应答)执行一个任务可能需要花费几秒钟,你可能会担心如果一个消费者在执行任务过程中挂掉了。一旦RabbitMQ将消息分发给了消费者,就会从内存中删除。在这种情况下,如果正在执行任务的消费者宕机,会丢失正在处理的消息和分发给这个消费者但尚未处理的消息。但是,我们不想丢失任何任务,如果有一个消费者挂掉了,那么我们应该将分发给它的任务交付给原创 2016-02-15 20:44:55 · 50437 阅读 · 13 评论 -
Spring整合RabbitMQ进行消息队列开发
Spring AMQP提供了org.springframework.amqp.core.AmqpTemplate来发送与接收消息。RabbitMQ是Spring AMQP官方示例中所用的默认AMQP实现。在项目pom.xml文件中添加依赖: com.rabbitmq amqp-client 3.4.1 org.springframework.amqp spring-rab原创 2016-02-24 22:02:15 · 3177 阅读 · 0 评论 -
RabbitMQ消息分发模式----"Work Queues"模式
2、Workqueues工作队列模式:上篇博客我们完成了一个简单的对声明的队列进行发送和接受消息程序。下面我们将创建一个工作队列,来向多个工作者(consumer)分发耗时任务。今天我们来看工作队列(又名:任务队列)。主要是为了避免立即做一个资源密集型的却又必须等待完成的任务。相反的,我们进行任务调度:将任务封装为消息并发给队列。在后台运行的工作者(consumer)将其取出,然后原创 2016-01-25 23:13:53 · 5713 阅读 · 0 评论 -
RabbitMQ消息的持久化
RabbitMQ消息持久化需要将消息和队列都持久化队列持久化 //为Channel定义queue的属性,queueName为queue名称 第二个参数持久化标志,为true表示持久化channel.queueDeclare(queueName, true, false,false,null); 消息持久化/** * 测试条件:1、在消息队列持久化的前提下2、接收消息方设置接收方原创 2016-02-19 22:51:55 · 2138 阅读 · 1 评论 -
RabbitMQ消息分发模式----"Topic"主题模式
前面虽然有Direct类型和Fanout的转换器。但它们仍然有一定的局限性——不能根据多重条件进行路由选择。Topic exchange(主题转发器)发送给主题转发器的消息不能是任意设置的选择键,必须是用小数点隔开的一系列的标识符。这些标识符可以是随意,但是通常跟消息的某些特性相关联。一些合法的路由选择键比如“socket.usd.nyse”,"nyse.vmw","qui原创 2016-01-31 22:33:33 · 21179 阅读 · 2 评论 -
RabbitMQ消息分发模式----"Publish/Subscribe"发布/订阅模式
介绍我们都是基于一个队列发送和接受消息。 前面讲的几种,不管是生产者端还是消费者端都必须知道一个指定的QueueName才能发送、获取消息。 而RabbitMQ消息模型的核心思想是生产者不会将消息直接发送给队列。现在介绍一下完整的消息传递模式:如果同一个消息,要求每个消费者都处理的话,就需要RabbitMQ提供的消息分发模式中的------"Publish/Subscri原创 2016-01-29 20:03:32 · 7541 阅读 · 0 评论 -
RabbitMQ消息分发模式----"Hello World"模式
"Hello World"模式:即最简单的分发模式:一个消息生产者,一个消息消费者。生产者端代码:public class MsgSender { private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws IOExcep原创 2016-01-24 22:01:48 · 8723 阅读 · 0 评论 -
使用rabbitmq 实现延迟消费
使用场景介绍1、发版时经常需要不停机发版,遇到mq消费者,消费一半停机就会出现消息丢失(没有使用手动确认的情况)2、例如支付场景,准时支付、超过未支付将执行不同的方案,其中超时未支付可以看做一个延时消息。3、例如滴滴、淘宝的自动评价都是类似场景(不一定是用的什么技术)我是发版的情况遇到了可能有人会问了,mq支持手动确认啊,为什么不使用确认机制呢?1、由于用的是Spring原创 2017-09-30 15:38:52 · 11298 阅读 · 0 评论