1.rabbitMQ是什么?

mq是由erlang语言开发的开源的amqp的实现。

2.rabbitMQ的基本原理是什么?

使用RabbitMQ,首先需要与rabbitMQ的visiu host建立连接,visiu host使用exchange和quence组成,当客户端与visiu host建立连接后,还不能发送命令,

需要创建信道channel,然后通过channel来发送命令command和消息,到了visiu host,exchange和quence之间是通过binding形成绑定的,从而形成一个路由表,

然后通过路由表发送给不同的quence。

3.rabbitMQ的集中使用模式?

一种有6种;分别是:简单模式,工厂模式,发布订阅模式,路由模式,topics路由模式,rpc模式

简单模式:一个生产者,一个消费者,一个消息队列(没有exchange概念)

工厂模式:一个生产者,多个消费者,一个消息队列(没有exchange概念)

exchange的三种类型:fanout,direct,topics

发布订阅模式:一个生产者,多个消费者,一个exchange 类型fanout{广播类型},多个队列;

路由模式:一个生产者,多个消费者,一个exchange 类型direct{定向类型},多个队列;

主题模式:一个生产者,多个消费者,一个exchange类型topic{通配符匹配类型},多个队列;

4.实际项目中使用mq

 <description>rabbitmq 连接服务配置</description>
   <!--链接工厂配置,mq地址,mq用户名,mq密码,虚拟主机-->
    <rabbit:connection-factory id="connectionFactory" addresses="${mq.address}" username="${mq.username}" password="${mq.password}"  virtual-host="/"/>
   <!--管理员    <rabbit:admin connection-factory="connectionFactory"/>
    <!-- mq模板声明,message-converter意思是可以将object类型转化成json传输,也可以将json类型转成object-->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" message-converter="jsonMessageConverter" /> <!-- 使用jsckson执行消息转化 -->
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" /> <!--定义exchange的类型,绑定键和queue,是否自动删除-->
  <rabbit:direct-exchange name="${exchange_name}" auto-delete="false">
  <rabbit:bindings>
   <rabbit:binding key="${routing_key}" queue="${queue_name}"/>
  </rabbit:bindings>
  </rabbit:direct-exchange>
    <!-- 定义queue-->
<!--<rabbit:queue id="queue_id" name="${queue_name}" auto-delete="false" durable="true"/>--> <!-- 配置queue的监听 -->
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener ref="listen_class" queues="${queue_name}"/>
</rabbit:listener-container>
</beans> 生产者:
amqpTemplate.convertAndSend(exchange, roteKey, message);
消费者:
public class SelfListener implements MessageListener { @Override
public void onMessage(Message message) {}
}
												

rabbit原理及项目应用的更多相关文章

  1. HDS Truecopy实现原理及项目的选择-诸多案例

    copy from:http://www.eygle.com/archives/2009/05/hds_truecopy_dataguard.html 诸多案例:http://wenku.baidu. ...

  2. 广告行业中那些趣事系列6:BERT线上化ALBERT优化原理及项目实践(附github)

    摘要:BERT因为效果好和适用范围广两大优点,所以在NLP领域具有里程碑意义.实际项目中主要使用BERT来做文本分类任务,其实就是给文本打标签.因为原生态BERT预训练模型动辄几百兆甚至上千兆的大小, ...

  3. LCN解决分布式事务原理解析+项目实战(原创精华版)

    写在前面: 原创不易,如果觉得不错推荐一下,谢谢! 由于工作需要,公司的微服务项目需解决分布式事务的问题,且由我进行分布式事务框架搭建和整合工作. 那么借此机会好好的将解决分布式事务的内容进行整理一下 ...

  4. 编译原理根据项目集规范族构造LR(0)分析表

    转载于https://blog.csdn.net/Johan_Joe_King/article/details/79058597?utm_medium=distribute.pc_relevant.n ...

  5. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

  6. Rabbit原理理解

    1.RabbitMQ知多少   圣杰 2.[RabbitMQ]——三种Exchange模式(Fanout.Direct.Topic) https://blog.csdn.net/hao134838/a ...

  7. Java Annotation 及几个常用开源项目注解原理简析

    PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...

  8. 《HiWind企业快速开发框架实战》(2)使用HiWind创建自己的项目

    <HiWind企业快速开发框架实战>(2)使用HiWind创建自己的项目 关于HiWind HiWind企业快速开发框架,是基于.NET+EasyUi(支持各种前端扩展,后面将扩展Boot ...

  9. cocos2d-x创建新项目模板

    1.起因 长期使用项目中自带的HelloWorldScene来创建模板工程,不知大家有木有感到厌烦? 我是个懒人,所以就弄了个新的模板工程.这样最起码可以不用每次都把HelloWorldScene删掉 ...

随机推荐

  1. 神州数码BGP路由协议配置

    实验要求:了解BGP路由协议的配置方法及原理 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 ip add ...

  2. IOS 生成静态库文件(.framework)

    http://blog.csdn.net/zwl492454828/article/details/55095422

  3. Vue中添加新的路由并访问

    1.搭建好Vue脚手架(这里使用的版本是Vue2.0) 2.在代码编辑器(这里使用的是Sublime Text)打开项目文件夹 3.在文件目录src中的component下创建一个新的vue页面,写入 ...

  4. Altium Designer 10 执行DRC发现有 Length Constraint 解决办法

    在PCB布局连线结束后,执行DRC,结果Length Constraint 报错,如图: 在Design Rules中找对应的规则约束,怎么也找不见. 其实是,在差分对进行等长蛇形绕线的步骤中,约束了 ...

  5. bash内建命令

    bash内建命令 1.local命令 基本介绍 local命令是用来定义一个局部变量的,它只能定义在函数中,并且随着函数的结束而被销毁 基本语法 local  [option]  name[=valu ...

  6. 基于webpack的react开发环境搭建新手教程

    最近学习react-webpack项目搭建,找到一篇我认为不错的博客,跟着学习了一番,写得很详细很好,本篇博客纯属记录总结,要看更详细的搭建过程及解析,请戳: 基于webpack的React项目搭建( ...

  7. hdu 1394 逆序对(nlgn+o(n) )

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...

  8. javascript 4.2

    element.value="......"也可以为属性设置新的值 setAttribute()方法是“第一级DOM”的组成部分之一,DOM是适用于多种环境和多种程序设计语言的通用 ...

  9. ubuntu16.04 安装java

    1.从官网下载 jdk-8u191-linux-x64.tar.gz(https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  10. python函数之可迭代对象、迭代器的判断

    怎么判断一个对象是可迭代对象还是迭代器 例子 from collections import Iterable, Iterator lst = ['Today is Wednesday', 'Tomo ...