ActiveMQ系列(一)

 

目录

1. ActiveMQ概述

2. ActiveMQ的安装

3. ActiveMQ的web页面账号密码控制和安全认证      


1. ActiveMQ概述

定义: ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。

主要实际应用场景

 ①应用解耦,例如:假如B系统和C系统都依赖A系统中的某数据,需要A系统中的数据做业务的关联处理。在A系统中的该数据发生变化时,传统的模式可能会通过接口实现,A系统需要调用B系统的接口通知B系统,同时还要调用C系统提供的接口通知C系统等等,同时还要求B系统和C系统要在A系统调用时要正常运行,否则可能导致调用失败,随后又可能涉及到如果调用失败了需要执行什么操作,定义什么样的失败策略等一系列的问题,导致三个系统之间耦合度很大,强行关联在一块。这个时候就需要消息中间件出马。A系统吧数据都放到一个公共的地方,谁想使用这部分数据的自己去拿,A系统只管放里面,用不用什么时候用使用者自己去定义,A系统不管那么多。同时如果刚好某个B系统出现了问题,没关系可以等修复完正常后再去取消息处理业务逻辑即可。达到解耦的效果。使用消息中间件后系统之间的调用也无需考虑系统的运行平台,mq是能够进行跨语言的通信,达到解耦的功能。

②流量削峰。在秒杀系统中再瞬间会有大量的请求堆积过来,会导致服务器压力过大,造成页面卡顿甚至导致服务崩溃。使用中间件可以起到一个缓冲作用,将请求消息先缓冲起来,服务根据自身的吞吐能力处理消费,保证系统的稳定性。

③异步处理能力。对于一些非关键或者非要求及时性的数据调用记录,可以通过消息队列异步处理下提升系统的吞吐量。

2. ActiveMQ的安装

windows系统安装(linux也差不多,自行百度)

     ①下载地址:http://activemq.apache.org/components/classic/download/   根据操作系统选择下载。这也是ActiveMQ的官网,里面也有相关的介绍文档,遇到问题后可以再官网上多找找

      

      ②安装

        第一步:先安装JDK,因为ActiveMQ使用java开发的,所以必须安装JDK并配置相关的环境变量。

        第二步:解压下载的文件

       

        太详细的不说了,自己百度吧

      ③启动,windows下启动要到bin目录下根据自己的操作系统选择相应的目录进去,点击bat启动脚本。

      ④补充说明:启动后,默认web控制页面的端口为8161(可配置),web页面的访问ActiveMQ默认使用的是jetty服务器,web控制页面密码在配置文件的  jetty-realm.properties 文件中。控制页面是否需要密码登陆也是可配置的。默认是需要密码的。ActiveMQ支持多种协议,我们使用的openwire协议,协议默认端口61616,配置查看在ActiveMQ.xml中。其他的几个没理解过使用。有兴趣的同学可以自行百度。

3. ActiveMQ的web页面账号密码控制和安全认证      

       即web控制页面密码和broker密码。在楼主刚接触mq的时候一直以为这两个是一样的。但偶尔一次发现在项目中使用时即使密码错误也能连接上mq并正常发送接收消息,后来查资料才发现这两个的不同。汗颜。。。这里总结一下

         web控制页面密码:账号密码在conf目录夹下的jetty-realm.properties 文件中,web控制页面主要显示mq的状态等等一些基本信息,方便我们监控。activemq的内嵌服务器是jetty,web页面就是放在jetty服务器中启动展示的。

jetty-realm.properties 中配置可以访问web控制页面的账号和密码  以及账号所属的角色

jetty.xml中配置web页面的认证,以及可以访问web控制页面的角色

安全认证密码

两种方式

ActiveMQ自带simpleAuthenticationPlugin插件

a. 在credentials.properties中添加账号和密码

b.在activemq.xml中添加配置文件,添加密码有下面两中方式

 

使用JAASAuthentication Plugin

       JAAS 全称为Java Authentication and Authorization Service JAVA认证授权服务,JAASAuthentication Plugin依赖标准的JAAS机制来实现认证,默认使用login.config文件作为配置

login.config文件中引用了users.properties来配置用户名密码,用groups.properties来配置用户所属的组

vi login.config
activemq {
    org.apache.activemq.jaas.PropertiesLoginModule required
        org.apache.activemq.jaas.properties.user="users.properties"
        org.apache.activemq.jaas.properties.group="groups.properties";
};

  conf/users.properties # 用户名=密码   admin=admin 

  conf/groups.properties #用户组名=用户名,用户名  admins=admin,guest

  在activemq.xml中配置生效   在<broker></broker>标签之间添加

<plugins>
    <jaasAuthenticationPlugin configuration="activemq" />
    <authorizationPlugin>
	    <map>
		    <authorizationMap>
				<authorizationEntries>
					<authorizationEntry queue="activemq.>" read="users" write="admins" admin="systems"/>
					<authorizationEntry topic="USER.>" read="admins" write="admins" admin="admins"/>
					<authorizationEntry queue=">" read="admins" write="admins" admin="admins"/>
					<authorizationEntry topic=">" read="admins" write="admins" admin="admins"/>
			    </authorizationEntries>
			</authorizationMap>
		</map>
	</authorizationPlugin>
</plugins>

read读权限,write写权限,admin表示队列的删除创建等权限。例如
 <authorizationEntry queue="activemq.>" read="users,admins" write="admins" admin="systems"/>

表示对于名称以activemq开头的队列,users组有读的权限(只能读,即只能消费,不能往队列写以及创建),admins组只有写的权限(不能读以及创建),systems操作权限(只能操作创建等权限,不能进行写和消费)。其中 topic=">" ,表示对于所有的topic。"activemq.>"中通配符前的点符号必须存在否则无法生效,也就是说前缀必须以点号结尾
> 也可用 * 替换。

其中<jaasAuthenticationPlugin configuration="activemq" /> 中的configuration的配置要与login.config文件中的配置对应上

read:可以从queue或者topic里面接收消息

write:可以向queue或者topic发送消息,

admin:可以创建queue或者topic(可能还有别的功能)

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值