当前位置:文档之家› rabbitmq介绍1.2.2综述

rabbitmq介绍1.2.2综述



import com.rabbitmq.client.MessageProperties;

import com.rabbitmq.client.ShutdownListener;

import com.rabbitmq.client.ShutdownSignalException;

import com.rabbitmq.client.impl.AMQCommand;
message
Exchange主要3种类型
• Fanout:不处理路由键(没有routingKey ),只 需把队列绑定到交换机上。发送到交换机的消息 都会转发到与该交换机绑定的所有队列上,类似 于广播,转发消息是最快的
Exchange主要3种类型
• Direct:处理路由键(有routingKey )。将一队列 绑定到交换机上,该消息需与一个特定的路由键 ( routingKey )完全匹配

import com.rabbitmq.client.impl.AMQImpl;

/**

* Title: Producer.java

* Description: 【生产者样例】iang.yang

* @date: 2013-12-25
– 高并发应用来不及处理,实时性要求不高
– 多应用之间异步通信,且耗时操作
什么是RabbitMQ
• RabbitMQ是由Erlang(爱立信公司)语言开发,实现 Advanced Message Queuing Protocol (AMQP高级消 息队列协议)的消息中间件。消息中间件主要用于 组件之间的解耦,消息的发送者无需知道消息使 用者的存在,反之亦然。
• Queue:队列,用于存放消息 • Message:消息,应用程序需要发送的数据 • Bind:根据routingKey绑定exchange与queue规则,
决定消息发送的方向
RabbitMQ对象间关系
broker
可多个 可多个 Connection Channel
可多个 Exchange
可多个 Queue
• 什么是MQ?
– MQ全称为Message Queue, 消息队列(MQ)是 一种应用程序对应用程序的通信方法(消息传 递),一般用作进程间通讯
• MQ有什么优势?
– MQ本身是异步的,往队列里发送消息后无需等 待,不同于通信协议。如HTTP协议(同步), 客户端发出请求后必须等待服务器回应
• 哪些情况下建议使用MQ
• 队列爆满
– RabbitMQ支持流控机制,可修改内存大小,默 认为机器内存的40%
RabbitMQ服务场景
• 应用程序之间无需即时返回且耗时操作 (异步)
– Work Queues(消息均匀分配消息给消费者) – Publish/Subscribe(广播模式,消息分发给所有
的消费者) – Routing(消费者接收消息由路由规则决定,简单
• Connection:应用程序与broker连接,可有多个连 接
• Channel:消息通道,connection中可建立多个 channel,每个channel代表一个会话任务,所有操 作都在channel中进行。
RabbitMQ名词解释
• Exchange:消息交换机,channel中可有多个,用 于投递消息。应用程序发送消息时先把消息给交 换机,由交换机投递给队列,不是直接给队列
选择RabbitMQ理由
– Reliability可靠性
• Exchange交换机、Queue队列、Message消息持久化、 高可用性
– Flexible Routing 灵活路由 – Clustering 集群
• 分为Disc(硬盘)与RAM(内存),保证至少一台 Disc
– Highly Available Queues高可用队列
• 与集群结合使用,设置队列间的消息同步
– Management UI管理界面
异常情况下RabbitMQ处理方式(单机 丢失/网络丢失/掉电/队列爆满)
• 单机丢失
– RabbitMQ支持集群,多台机器队列同步,丢失 消息可从其他机器上获取
• 网络丢失 • 掉电
– RabbitMQ支持持久化,数据保存在硬盘上
RabbitMQ介绍
目录
什么是MQ MQ有什么优势 哪些情况下建议使用MQ 什么是RabbitMQ 选择RabbitMQ理由 RabbitMQ服务场景 RabbitMQ结构图 RabbitMQ名词解释
目录
RabbitMQ客户端使用流程(productor/cunsumer) Productor范例代码及注意事项 Consumer范例代码及注意事项 开发中注意事项及重点关注异常处理 RabbitMQ服务端配置及重点参数 RabbitMQ与Spring整合范例代码
Exchange主要3种类型
• Topic:与direct类似,功能更强,支持模糊绑定 – *表示通配一个词 – #表示通配0个或多个词
RabbitMQ客户端使用流程 (productor/cunsumer)
Productor范例代码及注意事项

//以exchange为direct为例

package com.rabbitmq.test.ow.demo2;

import java.io.IOException;

import com.rabbitmq.client.BlockedListener;

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;
路由名) – Topics(消费者接收消息由路由规则决定,路由
规则名比较复杂)
• RPC远程调用(同步)
RabbitMQ结构图
RabbitMQ名词解释
• Broker:消息队列服务器实体,例如RabbitMQ服 务
• Vhost:虚拟主机,默认为“/”,一个broker里可 以有多个vhost,区分不同用户权限,类似java的 命令空间
相关主题