消息中间件
消息中间件Kafka、RabbitMQ等
CrazyL-
记录学习点点滴滴,一次共勉
展开
-
RabbitMQ优先级队列
优先级队列,具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权. 可以通过设置队列的x-max-priority参数来实现。 Map<String,Object> args = new HashMap<String,Object>(); args.put("x-max-priority",10); channel.queueDeclare("queue.p...原创 2019-10-21 11:00:07 · 561 阅读 · 0 评论 -
RabbitMQ延迟队列
延迟队列存储的对象是对应的延迟消息,所谓延迟消息是指当消息被发送后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。 延迟队列的使用场景有很多,比如: 订单系统,用户下单30分钟内进行支付,30分钟内没有支付,这个订单将进行异常处理 手机遥控家里的智能设备在指定的时间进行工作。这时候可以将用户指令发送到延迟队列 通过DLX和TTL模拟出延迟队列的功能 ...原创 2019-10-21 10:45:30 · 141 阅读 · 0 评论 -
RabbitMQ死信队列
DLX,Dead-Letter-Exchange,死信交换器。当消息在一个队列中变成死信,能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。 消息变成死信一般由以下几种情况: 消息被拒绝(Basic.Reject/Basic.Nack),并设置requeue参数为false 消息过期 队列达到最大长度 为队列添加DLX channel.exchangeDec...原创 2019-10-21 10:25:52 · 147 阅读 · 0 评论 -
RabbitMQ消息和队列的TTL
设置消息的TTL 两种方法设置消息的TTL 通过队列属性设置,队列中所有消息都具有相同的过期时间 对消息本身进行单独设置 如果同时设置,则消息的TTL以较小的值为准。消息在队列中的生存时间一旦超过设置的TTL值,就会变成死信(Dead Message),消费者将无法再收到该消息(这点不是绝对的)。 通过队列设置消息的TTL Map<String,Object> args = new...原创 2019-10-18 14:52:35 · 498 阅读 · 0 评论 -
mandatory和immediate
mandatory和immediate是channel.basicPublish方法中的两个参数,他们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器(Alternate Exchange)可以将未能被交换器路由的消息(没有绑定队列或者没有匹配的绑定)存储起来,而不是返回给客户端。 mandatory参数 mandatory为true时,交换器无法根据自...原创 2019-10-18 14:40:34 · 317 阅读 · 0 评论 -
RabbitMQ客户端开发
连接RabbitMQ 在给定的参数下连接RabbitMQ ConnectionFactory factory = new ConnectionFactory(); factory.setUsername(USERNAME); factory.setPassword(PASSWORD); factory.setVirtualHost(virtualhost); factory.setHost(IP_...原创 2019-10-17 11:23:41 · 233 阅读 · 0 评论 -
AMQP协议介绍
AMQP协议本身包括三层: Module Layer:协议最高层,主要定义了一些供客户端调用的命令,客户端可以利用这些命令实现自己的业务逻辑。例如,客户端可以使用Queue.Declare命令声明一个队列或者使用Basic.Consume订阅消费一个队列中的消息 Session Layer:中间层,主要负责将客户端的命令发送给服务器,再将服务端的应答返回给客户端,主要为客户端和服务端之间的通信提...原创 2019-10-17 10:04:34 · 495 阅读 · 0 评论 -
RabbitMQ相关概念
RabbitMQ模型架构 生产者和消费者 Producer:生产者,投递消息的一方 生产者创建消息,然后发布到RabbitMQ中。消息包含消息体和标签。消息体也称为payload,实际应用中,消息体一般是一个带有业务逻辑结构的数据,比如一个JSON字符串。消息的标签用来表述这条消息,比如一个交换器的名称和一个路由键。生产者把消息交由RabbitMQ,RabbitMQ会根据标签把消息发送给感兴趣...原创 2019-10-16 10:38:51 · 184 阅读 · 0 评论 -
RabbitMQ简介
起源 RabbitMQ是采用Erlang语言实现的AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件。 2006年6月,由Cisco、Redhat、iMatix等联合制定了AMQP的公开标准,由此AMQP登上了历史舞台。是一个应用层协议的开放标准。 RabbitMQ是由RabbitMQ Technoligies Ltd开发并提供商业支持。取...原创 2019-10-15 16:12:53 · 412 阅读 · 0 评论 -
消息中间件
什么是消息中间件 消息(Message)是指在应用间传递的数据。可以非常简单,如文本字符串、JSON等,也可以复杂,如内嵌对象。 消息队列中间件(Message Queue Middleware,简称MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 两种传递模式: 点对点 生产者发送一条消息到queue,只有一个消费者能收到。 queue实现...原创 2019-10-15 15:36:47 · 169 阅读 · 0 评论 -
activeMQ安装与入门
activeMQ官网下载 最新版5.15需要jdk1.8,下载的是5.14.5参考: http://activemq.apache.org/getting-started.html下载并解压启动activeMQcd [activemq_install_dir]/bin ./activemq start测试安装 URL: http://127.0.0.1:8161/admin/ Login:原创 2017-11-20 21:54:00 · 434 阅读 · 0 评论