rabbit原理及项目应用
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原理及项目应用的更多相关文章
- HDS Truecopy实现原理及项目的选择-诸多案例
copy from:http://www.eygle.com/archives/2009/05/hds_truecopy_dataguard.html 诸多案例:http://wenku.baidu. ...
- 广告行业中那些趣事系列6:BERT线上化ALBERT优化原理及项目实践(附github)
摘要:BERT因为效果好和适用范围广两大优点,所以在NLP领域具有里程碑意义.实际项目中主要使用BERT来做文本分类任务,其实就是给文本打标签.因为原生态BERT预训练模型动辄几百兆甚至上千兆的大小, ...
- LCN解决分布式事务原理解析+项目实战(原创精华版)
写在前面: 原创不易,如果觉得不错推荐一下,谢谢! 由于工作需要,公司的微服务项目需解决分布式事务的问题,且由我进行分布式事务框架搭建和整合工作. 那么借此机会好好的将解决分布式事务的内容进行整理一下 ...
- 编译原理根据项目集规范族构造LR(0)分析表
转载于https://blog.csdn.net/Johan_Joe_King/article/details/79058597?utm_medium=distribute.pc_relevant.n ...
- Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
- Rabbit原理理解
1.RabbitMQ知多少 圣杰 2.[RabbitMQ]——三种Exchange模式(Fanout.Direct.Topic) https://blog.csdn.net/hao134838/a ...
- Java Annotation 及几个常用开源项目注解原理简析
PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...
- 《HiWind企业快速开发框架实战》(2)使用HiWind创建自己的项目
<HiWind企业快速开发框架实战>(2)使用HiWind创建自己的项目 关于HiWind HiWind企业快速开发框架,是基于.NET+EasyUi(支持各种前端扩展,后面将扩展Boot ...
- cocos2d-x创建新项目模板
1.起因 长期使用项目中自带的HelloWorldScene来创建模板工程,不知大家有木有感到厌烦? 我是个懒人,所以就弄了个新的模板工程.这样最起码可以不用每次都把HelloWorldScene删掉 ...
随机推荐
- EOS wallet API 报HTTP 400错误
服务器:192.168.8.144 按照官方的docker方式运行的,因为keosd(钱包)开出来的API只容许本地访问,即: url --request POST --header 'Host: 0 ...
- java语言基础--方法的执行图解
1.调用m1方法(压栈) 2.m1调用m2方法(压栈) 3.m2调用m3方法(压栈) 4.运行m3(弹栈) 5.运行m2(弹栈) 6.运行m1(弹栈)
- svg 图片
https://studio.qcloud.coding.net/rs2/d67e3c26b502365f8ab7c05d71c70471.svg 腾讯编辑器loading页面的svg
- php中include和require的区别(整理)
require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 requi ...
- 小妖精的完美游戏教室——东方PROJECT,同人,th12灵梦A
╮(╯▽╰)╭没办法,小妖精Balous也很讨厌学院化的教育呀,一点意义都没有. 这次就上传东方地灵殿灵梦A逻辑部分的核心代码吧,估计连老师都看不懂.动画部分的代码就不放上来了. //======== ...
- python rabbitMQ 发送端和接收端广播模式。
消费者模型: import pika,time consumer = pika.BlockingConnection\ (pika.ConnectionParameters('localhost')) ...
- 添加本地jar包到maven仓库
mvn install:install-file -Dfile=D:\video-lib\log4j-.jar -DgroupId=video -DartifactId=log4j -Dversion ...
- IPFS 探索
IPFS 探索 比特币当前是用于存金融交易数据,有leveldb 存关键小的交易数据.那么我们的文件,譬如一个网站里面的static file 怎么办? IPFS(InterPlanetary Fil ...
- PowerShell 知识点总结
- Taro 代码及功能,需要注意的地方
Taro 代码不能使用的写法: 请注意无 AppID 关联下,调用 wx.operateWXData 是受限的, API 的返回是工具的模拟返回