RabbitMQ基于AMQP协议。

AMQP:是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现

RabbitMQ使用:Exchange(交换机)根据routing-key(路由选择键)匹配相应的queue(队列)

Exchange有4中类型:

direct:exchange在和queue进行binding时会设置routingkey,进行消息发送时,只有设置相同的routingkey,交换机才会路由到相应的队列。

topic:和direct差不多,只是topic允许routingkey使用通配符'*','#'.来匹配到相应的queue

fanout:直接将消息路由到所有绑定的队列中

header:和以上三个都不一样,其路由的规则是根据header来判断,其中的header就是以下方法的arguments参数

参考:https://www.cnblogs.com/julyluo/p/6265775.html,https://www.jianshu.com/p/d5675b1c8112

Routing Key:在Consumer在binding exchange和queue时指定;在Producer在发送消息时指定。
 
 
demo:
引入jar包:
<!-- RabbitMQ -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>

增加RabbitMQ配置

<!-- rabbitMQ配置 -->
<bean id="rabbitConnectionFactory"
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<constructor-arg value="172.16.1.15"/>
<property name="username" value="admin"/>
<property name="password" value="admin"/>
<property name="channelCacheSize" value="8"/>
<property name="port" value="5672"></property>
</bean>
<rabbit:admin connection-factory="rabbitConnectionFactory"/> <!--邮件相关队列-->
<rabbit:queue name="test_email_queue" durable="true"/>
<!--短信相关队列-->
<rabbit:queue name="test_sms_queue" durable="true"/> <!--将队列和交换器通过路由键绑定-->
<rabbit:direct-exchange name="TEST_MQ"
xmlns="http://www.springframework.org/schema/rabbit"
durable="true">
<rabbit:bindings>
<rabbit:binding queue="test_email_queue" key="email" ></rabbit:binding>
<rabbit:binding queue="test_sms_queue" key="sms" ></rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange> <!-- 创建rabbitTemplate 消息模板类 -->
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<constructor-arg ref="rabbitConnectionFactory"></constructor-arg>
</bean> <rabbit:listener-container connection-factory="rabbitConnectionFactory">
<rabbit:listener queues="test_email_queue" ref="processUserEmail"
method="onMessage"/>
<rabbit:listener queues="test_sms_queue" ref="processUserSms"
method="onMessage"/>
</rabbit:listener-container>

实现类:(生产者写入MQ)

package com.study.demo.service.impl;

import com.study.demo.service.IUserReg;
import com.study.demo.service.busi.SaveUser;
import com.study.demo.vo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; /**
*
* @Description: RabbitMQ实现的异步用户注册
* @author leeSmall
* @date 2018年9月18日
*
*/
@Service
@Qualifier("async")
public class AsyncProcess implements IUserReg{ private Logger logger = LoggerFactory.getLogger(AsyncProcess.class); @Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private SaveUser saveUser; public boolean userRegister(User user) {
try {
saveUser.saveUser(user);
rabbitTemplate.send("TEST_MQ","email",
new Message(user.getEmail().getBytes(),new MessageProperties()));
rabbitTemplate.send("TEST_MQ","sms",
new Message(user.getEmail().getBytes(),new MessageProperties()));
} catch (AmqpException e) {
logger.error(e.toString());
return false;
} return true;
}
}

消费者(监听调用该方法)

package com.study.demo.service.mq;

import com.study.demo.service.busi.SendEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; /**
*
* @Description: RabbitMQ消息消费端监听邮件消息类
* @author leeSmall
* @date 2018年9月18日
*
*/
@Component
public class ProcessUserEmail implements MessageListener { private Logger logger = LoggerFactory.getLogger(ProcessUserEmail.class); @Autowired
private SendEmail sendEmail; public void onMessage(Message message) {
logger.info("accept message,ready process......");
sendEmail.sendEmail(new String(message.getBody())); }
}
package com.study.demo.service.mq;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import com.study.demo.service.busi.SendSms; /**
*
* @Description: RabbitMQ消息消费端监听sms消息类
* @author leeSmall
* @date 2018年9月18日
*
*/
@Component
public class ProcessUserSms implements MessageListener { private Logger logger = LoggerFactory.getLogger(ProcessUserSms.class); @Autowired
private SendSms sendSms; public void onMessage(Message message) {
logger.info("accept message,ready process......");
sendSms.sendSms(new String(message.getBody())); }
}
使用目的:解耦,加快上文响应时间

使用场景:下单时关于库存的扣减、邮件、短信、消息的推送等需要异步处理的地方

如何使用的:
 库存的扣减:
用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。如下图:
aaarticlea/png;base64,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" alt="" />
 
传统模式的缺点:假如库存系统无法访问,则订单减库存将失败,从而导致订单失败,订单系统与库存系统耦合
应用消息队列后的方案:
aaarticlea/png;base64,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" alt="" />
 
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作
假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦
 
 
 
邮件、短信的发送:
串行方式:
aaarticlea/png;base64,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" alt="" />

 
并行方式(异步):
aaarticlea/png;base64,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" alt="" />
消息队列方式(解耦):
aaarticlea/png;base64,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" alt="" />

RabbitMQ使用简述的更多相关文章

  1. rabbitmq之简述HAProxy配置集群过程

    简介 HAProxy是一款提供高可用性.负载均衡以及基于TCP和HTTP应用的代理软件,HAProxy是完全免费的.借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案.HA ...

  2. 简述C#中IO的应用 RabbitMQ安装笔记 一次线上问题引发的对于C#中相等判断的思考 ef和mysql使用(一) ASP.NET/MVC/Core的HTTP请求流程

    简述C#中IO的应用   在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.I ...

  3. RabbitMq消息序列化简述

    涉及网络传输的应用.序列化不可避免. 发送端以某种规则将消息转成byte数组进行发送. 接收端则以约定的规则进行byte[]数组的解析. 序列化的选择能够是jdk序列化,hessian,jackson ...

  4. RabbitMQ十:重要方法简述(参数)

    主要方法 前言 经过前面的学习,RabbitMQ 已经拙见有一定认识和了解,今天主要针对我们在前面学习方法进行一次小总结,本篇文章也想在开头写的,但是后来考虑,如果我都把方法都一一列举,我想大家都没很 ...

  5. RabbitMQ简述

    官网教程 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现.支持多种客户端,如:Python.Ruby..NET.Java.J ...

  6. 消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局

    一.前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦 ...

  7. RabbitMQ安装使用详解

    1.下载相应的版本安装:http://www.rabbitmq.com/download.htmleg:http://www.rabbitmq.com/releases/rabbitmq-server ...

  8. RabbitMQ中的RPC实现

    1.RPC简述 RPC,Remote Procedure Call 远程过程调用.通俗讲,两段程序不在同一个内存空间,无法直接通过方法名调用,就需要通过网络通信方式调用.对于RabbitMQ,本身就是 ...

  9. IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?

    1.前言 在IM这种讲究高并发.高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转.消息削峰.消息交换异步化等等角色,当然MQ消息中间件的作用远不止于 ...

随机推荐

  1. 刷题总结——宠物收养所(bzoj1208)

    题目: Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明 ...

  2. 算法复习——2—sat(bzoj2199)

    题目: Description 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会.议会以“每头牛 都可以获得自己想要的”为原则,建立了下面的投票系统: M只到场的奶牛 ...

  3. AOP面向方面(切面)编程

    1.引言 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块.于是出现了以系统模块化特性的面向对象程序设计技术.模块化的面向对象编程极度极地提 ...

  4. hdu 4951

    Multiplication table Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  5. 标准C程序设计七---26

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  6. Python练习题–持续更新

    1.你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号. 产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大 ...

  7. Idea配置Tomcat以及maven

    配置Tamcat Run-->Edit Configurations +-->如果列表里没有tomcat-->点击33 items more irrelevant继续寻找--> ...

  8. 使用EventNext实现基于事件驱动的业务处理

    事件驱动模型相信对大家来说并不陌生,因为这是一套非常高效的逻辑处理模型,通过事件来驱动接下来需要完成的工作,而不像传统同步模型等待任务完成后再继续!虽然事件驱动有着这样的好处,但在传统设计上基于消息回 ...

  9. CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)

    [传送门]http://codeforces.com/problemset/problem/813/C [题意]给定整数a,b,c,s,求使得  xa yb zc值最大的实数 x,y,z , 其中x ...

  10. CODEVS_1074 食物链

    #include<iostream> #include<algorithm> #include<cstring> #include<string> #d ...