ActiveMQ使用笔记(四)ActiveMQ配置安全性
监视ActiveMQ的方式有多种,在第一部分中已经说到了Web监视控制台,设置登录用户名和密码,这里再说一下JMX监控。运行了ActiveMQ之后,再运行jdk自带的jconsole即可以看到ActiveMQ的进程,如图:
点击连接之后就可以看到ActiveMQ的运行情况。默认情况下是不需要用户名和口令的,修改activemq.bat,找到
SUNJMX=-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
修改成
SUNJMX=-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/ jmx.access
Linux下的找到:
#ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 " #ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONFIG_DIR}/jmx.password" #ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONFIG_DIR}/jmx.access" #ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false" ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"
去掉注释即可。
重启ActiveMQ之后,在用jconsole连接就需要输入用户名和密码,jmx.access文件配置用户的访问权限readonly和 readwrite,admin readwrite表示用户admin具有读写权限。Jmx.password文件配置用户的密码,admin activemq 表示admin用户的密码是activemq。
除了监视台可以设置用户名和密码之后,ActiveMQ也可以对各个主题和队列设置用户名和密码,配置如下:
<plugins> <!-- Configure authentication; Username, passwords and groups --> <simpleAuthenticationPlugin> <users> <authenticationUser username="system" password="manager" groups="users,admins"/> <authenticationUser username="user" password="password" groups="users"/> <authenticationUser username="guest" password="password" groups="guests"/> <authenticationUser username="testUser" password="123456" groups="testGroup"/> </users> </simpleAuthenticationPlugin> <!-- Lets configure a destination based authorization mechanism --> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> <authorizationEntry queue="queue.group.uum" read="users" write="users" admin="users" /> <authorizationEntry queue=">" read="admins" write="admins" admin="admins" /> <authorizationEntry queue="USERS.>" read="users" write="users" admin="users" /> <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" /> <authorizationEntry queue="TEST.Q" read="guests" write="guests" /> <authorizationEntry queue="test" read=" testGroup " write=" testGroup " /> <authorizationEntry topic=">" read="admins" write="admins" admin="admins" /> <authorizationEntry topic="USERS.>" read="users" write="users" admin="users" /> <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" /> <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users ,testGroup" write="guests,users ,testGroup " admin="guests,users ,testGroup "/> </authorizationEntries> </authorizationMap> </map> </authorizationPlugin> </plugins>
simpleAuthenticationPlugin中设置用户名、密码和群组,authorizationPlugin设置主题和队列的访问群 组,“>”表示所有的主题或者队列。上面的配置中添加了一个testUser,属于群组testGroup,同时设置test这个队列的访问读写权 限为testGroup,当然admins也可以访问的,因为admins是对所有的队列都有访问权限。将第三部分代码中的设置用户名和密码改成刚刚添加 的用户testUser,如果密码不正确,将会抛出User name or password is invalid.异常,如果testUser所属的群组不能访问test队列,那么会抛出User guest is not authorized to write to: queue://test异常。需要注意的是所有的群组都需要对以ActiveMQ.Advisory为前缀的主题具有访问权限。
相关推荐
在本篇ActiveMQ学习笔记中,我们将探讨如何通过纯代码方式启动一个嵌入式的Broker,这对于测试、开发或者快速原型构建非常有用。ActiveMQ是一个开源的消息代理,它遵循Java消息服务(JMS)规范,提供了高可靠性的...
在这个"ActiveMQ 教学视频/教程 /附带笔记等资源"的压缩包中,你将找到一系列关于如何使用ActiveMQ作为中间件的教育资源。 首先,让我们深入了解ActiveMQ的核心概念和功能: 1. **核心概念**: - **消息队列...
**ActiveMQ笔记** ActiveMQ是Apache软件基金会的一个开源项目,它是Java消息服务(JMS)的一个实现,专门用于处理消息传递。作为一个中间件,ActiveMQ允许应用程序之间通过异步通信来解耦它们的功能,提高系统的可...
这篇"ActiveMQ学习笔记之九--发送消息到队列中"主要探讨的是如何通过编程方式向ActiveMQ队列发送消息,这对于理解和应用消息中间件至关重要。 首先,我们要理解ActiveMQ中的队列(Queue)概念。队列是一种先进先出...
**ActiveMQ学习笔记之一——ActiveMQ下载** ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它是基于Java消息服务(JMS)规范的,用于在分布式系统中传递消息。作为一个高性能、可伸缩且可靠的解决方案,...
**ActiveMQ笔记** ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它是Java Message Service (JMS) 的实现,广泛应用于分布式系统中的异步通信。本笔记将详细探讨ActiveMQ的核心概念、工作原理以及实际应用...
3. 安全性:支持用户认证和授权,保障数据安全。 4. 跨语言支持:ActiveMQ不仅支持Java,还支持C++、Python、Ruby等多种语言的客户端。 5. 灵活性:允许配置各种消息持久化策略、网络拓扑和负载均衡策略。 6. 丰富的...
这六个技术在实际开发中经常结合使用,例如,Linux作为基础操作系统,Dubbo负责服务间通信,Redis提供缓存和快速数据访问,Solr处理全文搜索,Shiro管理用户安全,而ActiveMQ则作为消息队列确保任务的异步执行和解耦...
ActiveMQ允许应用程序之间进行异步通信,提高了系统的可扩展性和解耦性。面试中可能会问到ActiveMQ的基本概念,如生产者与消费者模型、队列与主题的区别、以及如何处理消息的持久化和事务等。 **Dubbo** 是阿里巴巴...
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、安全性和健壮性。在Java的学习过程中,基础知识是非常重要的,这里我们将深入探讨Java语言的基础概念。 首先,Java的基本语法单位包括...
- 安全性:ActiveMQ支持多种安全特性,如SSL/TLS加密通信、身份验证以及授权等,确保消息在传输过程和存储过程中的安全。 - 高可用性与集群:ActiveMQ支持网络集群和故障转移,可以部署在多个节点上以提供高可用性。...
在微服务架构中,ActiveMQ常用于服务间的通信,减少直接依赖,提高系统的可扩展性和可靠性。 JUC(Java Concurrency Utilities)是Java并发包,提供了高级并发工具类,如线程池、并发容器、锁、信号量等,帮助...
**JMS例子** 可能包括创建简单的生产者和消费者,以及更复杂的场景,如实现故障切换、负载均衡或者使用事务确保消息的一致性。例如,一个例子可能演示如何通过JMS API创建一个生产者,向队列发送一条消息,然后创建...
笔记可能介绍了ActiveMQ的基本概念、配置、使用场景,以及如何与其他Java应用集成。 4. **Redis精讲**(37、Redis精讲.pdf):Redis是一个高性能的键值存储系统,常用于缓存和实时数据处理。笔记可能会涵盖Redis的...
### Fuse ESB 4.3.1 使用笔记 #### 一、概述 Fuse ESB (Enterprise Service Bus) 4.3.1 是一个强大的企业级服务总线平台,基于Apache Karaf容器构建,用于集成不同的应用程序和服务。它支持多种集成模式和技术栈,...
通过配置和使用ActiveMQ,我们可以深入了解JMS的实际应用。 在实际开发中,了解如何在Java应用程序中集成JMS,如创建ConnectionFactory、Session、Producer和Consumer,以及如何发送和接收消息,是非常重要的。此外...
9. **10搜索引擎篇.pdf** - 可能涉及到搜索引擎的基本原理,如Lucene库的使用,Elasticsearch的安装配置及查询优化,以及如何在Java项目中集成搜索引擎。 10. **11安全验证篇.pdf** - 安全是任何软件系统的重要组成...
6. 安全性:身份验证和授权机制,如JAAS的使用。 7. 性能优化:消息持久化、消息压缩和批量发送等技巧。 接下来是"java后端面试题答案"。Java后端开发是软件工程中的关键部分,面试时可能会涉及以下内容: 1. Java...