项目实践——消息队列de使用
2017-10-07 23:13
162 查看
为什么要使用消息队列呢?因为建立索引的话,那么数据库的信息必须在索引库中,而如果在数据库中新增商品的话,那么如何才能让索引库知道自动添加进索引库呢?
此时就用了消息队列。消息队列就像是现实生活中的秘书一样,发布者就是老板,此时如果要开会,只需要给秘书说下午几点开会,哪个部门来,秘书具体的实现过程我们不必要了解,而部门来的时候带什么或者准备什么也不是我们关心的,我们只需要发布消息就行。
同步索引库分析,如果不用消息队列ActiveMQ的情况下
1,在商品添加的同时就使用solrj将商品也同时的添加到索引库中。
这个方法是可行的,但是只适合在传统项目,即只有一个web服务的情况下,当现在如果是面向服务SOA的架构呢,SOA架构即将所有的服务层和表现层分开,表现层能够调用服务层中的任何一个服务,此时的设计原则就是单一职能的原则,solr的使用是在search索引服务中,而商品添加是在manage的商品管理服务中的,这时候如果用上面说的在商品添加的同时就用solrj将商品也添加到索引库中的话,这时候业务逻辑就严重的耦合到了一块。
2,此时消息队列就出现了,实现了系统之间的解耦
ActiveMQ有两种消息形式:1,点到点的形式,2,发布/订阅模式,即广播形式
ActiveMQ可以发布多种消息:最常用的就是TextMessage
activeMQ的安装(因为是基于java开发的,所以前提jdk要安装好)
把压缩包中传送到服务器并且解压缩。
只需要启动即可,在bin目录下面 ./activemq start
active有个后台管理器,可以在浏览器中 输入 服务器地址:端口(8161)
ActiveMQ的使用方法,
消息的生产者:
1,先把jar包加入到项目中
2,创建一个连接工厂,connectionDactory 需要指定MQ服务的ip和端口号"tcp://192.168.25.3:61616"
3,使用connectionDactory创建一个连接对象 connection
4,开启连接调用connection对象的start方法
5,使用connection对象创建一个session对象,第一个参数是是否开启事务,一般不使用事务,因为只要保持数据的最终一致,如果第一个参数是true的话,第二个参数可以自动的忽略,如果不开启事务那么是falese,那么第二个参数是消息的应答模式,一种是自动应答,一种是手动应答,一般是自动应答
6,使用session对象创建一个destionation对象,两种形式,一种是queue,topic。参数就是消息对列的名称
7,使用session对象来创建一个producer对象。
8,创建一个textmessage对象,可以直接调用textmessage进行创建对象
9,发送消息,
10关闭资源
消息的消费者;
1,建立一个连接工厂对象,
2,使用连接工厂对象创建一个连接。
3,开启连接
4.使用连接对象创建一个session对象
5,使用session创建一个destination,destination应该和消息的发送端一致
6,使用session创建一个consumer对象
7.向consumer对象中设置一个messagelistener对象。用来接收消息
8,取出消息的内容
此时如果用框架的话,就得考虑activeMQ整合spring,既然都是固定的创建套路,所以直接用spring配置即可
整合的话得加入jar包, spring-jms包,还有spring-context-suport
创建一个新的配置文件application-activemq,xml
配置文件的话可以上百度查。
束河使用JMSTemlate来发送消息呢?
首先得到JMS这个对象,让Spring加载配置文件中的对象
从容器中获得hms对象,。
从容器中获得destination对象
发送消息
此时就可以实现商品到数据库的同时也能将商品添加到索引库中了。因为activeMQ传送的消息可以自定义,所以可以把商品id传送出去‘
此时就用了消息队列。消息队列就像是现实生活中的秘书一样,发布者就是老板,此时如果要开会,只需要给秘书说下午几点开会,哪个部门来,秘书具体的实现过程我们不必要了解,而部门来的时候带什么或者准备什么也不是我们关心的,我们只需要发布消息就行。
同步索引库分析,如果不用消息队列ActiveMQ的情况下
1,在商品添加的同时就使用solrj将商品也同时的添加到索引库中。
这个方法是可行的,但是只适合在传统项目,即只有一个web服务的情况下,当现在如果是面向服务SOA的架构呢,SOA架构即将所有的服务层和表现层分开,表现层能够调用服务层中的任何一个服务,此时的设计原则就是单一职能的原则,solr的使用是在search索引服务中,而商品添加是在manage的商品管理服务中的,这时候如果用上面说的在商品添加的同时就用solrj将商品也添加到索引库中的话,这时候业务逻辑就严重的耦合到了一块。
2,此时消息队列就出现了,实现了系统之间的解耦
ActiveMQ有两种消息形式:1,点到点的形式,2,发布/订阅模式,即广播形式
ActiveMQ可以发布多种消息:最常用的就是TextMessage
activeMQ的安装(因为是基于java开发的,所以前提jdk要安装好)
把压缩包中传送到服务器并且解压缩。
只需要启动即可,在bin目录下面 ./activemq start
active有个后台管理器,可以在浏览器中 输入 服务器地址:端口(8161)
ActiveMQ的使用方法,
消息的生产者:
1,先把jar包加入到项目中
2,创建一个连接工厂,connectionDactory 需要指定MQ服务的ip和端口号"tcp://192.168.25.3:61616"
3,使用connectionDactory创建一个连接对象 connection
4,开启连接调用connection对象的start方法
5,使用connection对象创建一个session对象,第一个参数是是否开启事务,一般不使用事务,因为只要保持数据的最终一致,如果第一个参数是true的话,第二个参数可以自动的忽略,如果不开启事务那么是falese,那么第二个参数是消息的应答模式,一种是自动应答,一种是手动应答,一般是自动应答
6,使用session对象创建一个destionation对象,两种形式,一种是queue,topic。参数就是消息对列的名称
7,使用session对象来创建一个producer对象。
8,创建一个textmessage对象,可以直接调用textmessage进行创建对象
9,发送消息,
10关闭资源
消息的消费者;
1,建立一个连接工厂对象,
2,使用连接工厂对象创建一个连接。
3,开启连接
4.使用连接对象创建一个session对象
5,使用session创建一个destination,destination应该和消息的发送端一致
6,使用session创建一个consumer对象
7.向consumer对象中设置一个messagelistener对象。用来接收消息
8,取出消息的内容
此时如果用框架的话,就得考虑activeMQ整合spring,既然都是固定的创建套路,所以直接用spring配置即可
整合的话得加入jar包, spring-jms包,还有spring-context-suport
创建一个新的配置文件application-activemq,xml
配置文件的话可以上百度查。
束河使用JMSTemlate来发送消息呢?
首先得到JMS这个对象,让Spring加载配置文件中的对象
从容器中获得hms对象,。
从容器中获得destination对象
发送消息
此时就可以实现商品到数据库的同时也能将商品添加到索引库中了。因为activeMQ传送的消息可以自定义,所以可以把商品id传送出去‘
相关文章推荐
- Java 项目中使用 TongLink/Q 实现消息队列传输
- 准备将redis引入项目做消息队列使用
- 消息队列在项目中的使用总结
- Redis应用实践-使用消息队列发布微博
- [课堂实践与项目]NavigationController与TabBarController的综合使用及易错点分析(包含消息提醒,app更新)
- Linux进程间通信(IPC)编程实践(十二)Posix消息队列--基本API的使用
- Linux进程通信之消息队列-项目实践
- 在项目中使用消息队列的 10 个理由
- 消息队列在项目中的使用总结
- Linux进程间通信(IPC)编程实践(十二)Posix消息队列--基本API的使用
- 使用微软消息队列实现C#进程间通信
- 消息队列(Message Queue)简介及其使用
- 使用C#来操作消息队列
- 消息队列(Message Queue)简介及其使用
- 使用java.util.concurrent实现的线程池、消息队列功能
- 消息队列(Message Queue)简介及其使用
- TortoiseSVN 结合项目实践使用总结
- 消息队列(Message Queue)简介及其使用
- 使用NBear.MQ分布式服务消息队列模块开发分布式系统
- 初次使用消息队列