activemq的作用(activemq详解)

admin 132 0

大家好,关于activemq的作用很多朋友都还不太明白,今天小编就来为大家分享关于activemq详解的知识,希望对各位有所帮助!

一、请用白话讲解ActiveMQ的用途

用途就是用来处理消息,也就是处理JMS的。消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有着深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度。

在不使用消息队列的情况下,用户的请求数据直接写入数据库,高发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧,但使用队列后,用户的请求发给队列后立即返回。

例如:不能直接给用户提示订单提交成功,京东上提示:“您提交了订单,请等待系统确认”再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。

由于消息队列的服务处理速度远快于数据库,因此用户的响应延迟可得到有效改善。

ActiveMQ主要有以下几种使用场景

3、做多个系统的集成、同构、异构。

6、作为事件驱动架构的幕后支撑。

二、ActiveMQ 是干什么的有什么作用能举个实际开发的例子吗

ActiveMQ的作用是实现跨网络的习性与系统剑通信,可以将业务解耦,提供异步消息支持,增加系统并发量。操作方法如下:

1、首先进入到官网下载ActiveMQ安装包。

2、分系统的,有linux的有windows的,这里选择的是windows版本的。

3、将下载的好的安装包解压即可使用。

4、解压后具体的目录结构如下图所示。

5、设置ActiveMQ的访问密码,打开conf目录的activemq.xml文件。

6、这里使用的是UE打开的如下,在该文件中添加密码用户<!--添加访问ActiveMQ的账号密码-->。

三、log4j.properties 的作用是什么求详解

Log4j是Apache的一个开源项目,如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找source folder下的log4j.xml配置文件。

若没有会寻找log4j.properties文件加载配置。配置文件放置位置正确,不用在程序中手动加载log4j配置文件。如果将配置文件放到了config文件夹下,在build path中设置下即可。

通常一个java项目会有很多的配置文件,建议把所有的配置文件放到一个文件夹下,如果不手动设置,不用人为的写加载log.properties文件的代码时,直接放src目录下,千万要记得,如果新建一个java项目,src文件要弄成原文件包才行。

1、log4j.properties的配置文件需放在src(或者WEB/INFO/classes)目录下,启动tomcat进程时log4j引擎也会随之启动(也就是log4j会自动初始化)。

2、如果log4j.properties配置文件放在别的目录,则需要应用程序负责初始化log4j,如spring提供了一个初始化log4j的监听类,当然你也可以自已写个servlet初始化log4j。

3、log4j.properties里面的配置key=value时,value后面一定不能有空格,否则该项配置不能生效,因为log4j没有处理value后面的空格。

四、记一次activemq监听Topic时莫名其妙的连接下线

1、这是一个之前从未遇到过的问题,因为监听启动以后消费者确实存在了一段时间。

2、但是异常的地方体现在,由于这个队列并不是一直有数据,一天可能只有一个时间段才有,但是再隔一段时间以后,消费者就会下线,且程序不报异常。经过了多方查阅以后,发现了是对方提供的mq配置存在问题。

3、可以看到这上面transport.useInactivityMonitor以及wireFormat.maxInactivityDuration的配置分别是false和0;

4、这两个参数的作用是和消费者(也可以说监听者)的连接发送心跳保持长连接。

5、如果设置成false以及0以后,就会造成连接断开,而且这个链接的断开竟然不被程序锁检测到,程序没有异常报错。

6、而当这两个参数设置成true及3000以后,问题迎刃而解。

五、ActiveMQ是什么是干什么用的

1、ActiviMq消息队列,解决了服务解耦合的动作,缓解了服务并发量很大,造成服务器无法处理的状况。(kafka、rabbitMQ、activiMQ)

其他作用:异步处理、消息通讯、流量消峰、应用解耦

1、用户注册的时候,重点内容是将用户信息保存到数据库中,发短信验证或者是发邮件增加了业务的复杂度。这时使用MQ将发短信、发邮件通知MQ由另外的服务平台完成。

查询数据,建立缓存、索引,不从数据库查询,从缓存或者索引库查询,当数据库发生增加、修改、删除操作时发消息给MQ,缓存平台或者是索引平台从MQ获取到这个消息,更新缓存或者索引。

ActiveMQ使用的是标准的生产者(完成生产消息并发送消息)和消费者(获取消息,完成自己的业务逻辑)模型

Topic(发布订阅)一个生产者对应多个消费者,消息默认不会持久化,需要手动配置持久化。如果A服务器挂了,再生产一条消息的话,会被B服务器拿去使用,就算重新启动,A服务器也不会再拿到消息了

商品系统、库存系统、生成商品详情页面的系统,现在要添加一个商品信息,消息肯定是需要让库存系统以及商品信息详情页面系统知道的。

Queue(点对点)一个生产者对应一个消费者,默认消息持久化

要完成topic模式的消息持久化,需要保证每个消费者有唯一的clientID(本文来自北大青鸟)

好了,文章到此结束,希望可以帮助到大家。