ActiveMQ介绍与安装

ActiveMQ介绍

什么是ActiveMQ

ActiveMQ 是Apache软件基金会出品的一款流行且功能强大的开源消息中间件,作为JMS Provider实现了对JMS1.1和J2EE 1.4规范的全面支持。尽管JMS规范已存在较长时间,但在现代J2EE应用中仍占据重要地位。

主要特点:

  1. 支持多种编程语言和应用协议开发客户端:
    • 语言:Java, C, C++, C#, Ruby, Perl, Python, PHP
    • 应用协议:OpenWire, Stomp, REST, WS Notification, XMPP, AMQP
  2. 完全遵循JMS1.1和J2EE 1.4规范,支持持久化消息、XA事务处理。
  3. 良好的Spring框架集成,可轻松嵌入使用Spring的应用系统,并支持Spring2.0特性。
  4. 经过主流J2EE服务器(如 Geronimo, JBoss 4, GlassFish, WebLogic)验证,通过JCA 1.5 resource adaptors配置,ActiveMQ可以自动部署到任何兼容J2EE 1.4的商业服务器上。
  5. 支持多种传输协议:in-VM, TCP, SSL, NIO, UDP, JGroups, JXTA。
  6. 提供通过JDBC和journal实现的高速消息持久化功能。
  7. 设计上确保了高性能集群、客户端-服务器模型及点对点消息传递。
  8. 支持Ajax技术。
  9. 可与Axis整合。
  10. 易于调用内嵌JMS Provider进行测试。

1.2 JMS介绍
JMS(Java Message Service)全称为Java消息服务,是一种Java平台的标准API,用于在分布式系统中的应用程序间异步地发送和接收消息。

在实际业务场景中,JMS用于在生产者和消费者之间传递消息。生产者负责生成消息并发送,消费者则负责接收并处理消息。消息传递有两种基本模式:

  1. 点对点(P2P):一个生产者与一个消费者一对一匹配。
  2. 发布/订阅(Pub/Sub):一个生产者发布消息后,可以被多个消费者同时接收。

JMS定义了五种不同类型的消息正文格式和消息类型:

  • StreamMessage:包含Java原始值的数据流
  • MapMessage:一组名称-值对
  • TextMessage:一个字符串对象
  • ObjectMessage:一个序列化的Java对象
  • BytesMessage:一个字节数据流

ActiveMQ的安装

2.1 下载


请访问官方网站 https://activemq.apache.org/components/classic/download/ 下载ActiveMQ。

image.png


2.2 安装步骤


  1. 安装JDK

    • 确保安装了JDK1.7或更高版本。
  2. 解压ActiveMQ

    • 将下载后的ActiveMQ压缩包进行解压。
  3. 配置ActiveMQ生产者消费者密码以及队列权限

在ActiveMQ的配置文件activemq.xml中,为了设置生产者和消费者的用户名密码,您可以在<broker>元素内部加入 <plugins> 配置段落.
其中包含 <simpleAuthenticationPlugin> 插件,具体配置如下:

image.png

<!-- 在broker节点内增加插件配置 -->
<broker xmlns="http://activemq.apache.org/schema/core" ... >
    ...
    <!-- 插入身份验证插件配置 -->
    <plugins>
        <simpleAuthenticationPlugin>
            <users>
                <!-- 添加一个用户及其组别 -->
                <authenticationUser username="aq" password="wstv1232131" groups="users,admins"/>
            </users>
        </simpleAuthenticationPlugin>

        <!-- 如果需要授权控制,可以配合 simpleAuthorizationPlugin 使用 -->
        <simpleAuthorizationPlugin>
            <authorizationEntries>
                <!-- 示例授权规则,允许属于 'users' 和 'admins' 组的用户访问名为 'exampleQueue' 的队列 -->
                <authorizationEntry queue=">" write="admins" read="users" admin="admins" />
                <!-- 更多授权规则可以在这里添加 -->
            </authorizationEntries>
        </simpleAuthorizationPlugin>
    </plugins>
    ...
</broker>

queue=">" > 为通配符 所有队列,如需只授权某个队列,则配置为:queue="exampleQueue"

在这个配置中,我们为ActiveMQ添加了一个用户名为wstv、密码为wstv1232131的用户,并将其分配给了usersadmins两个组。
这意味着后续使用这个用户名和密码连接到ActiveMQ的生产者和消费者将受到相应的身份验证和可能的授权控制。

4. 配置ActiveMQ持久化方式

在Apache ActiveMQ中配置持久化方式是为了确保即使在消息中间件(broker)重启后,消息依然能够被保存并重新分发给消费者。
ActiveMQ提供了多种持久化机制,其中包括KahaDB、JDBC、LevelDB等。以下是使用KahaDB作为持久化方式的配置示例:

在ActiveMQ的配置文件conf/activemq.xml中找到<broker>元素,并在其内部添加或修改持久化插件配置:

<broker xmlns="http://activemq.apache.org/schema/core"
        brokerName="yourBrokerName"
        dataDirectory="/path/to/your/data/directory">

    <!-- 默认情况下,ActiveMQ 5.x 使用 KahaDB 持久化 -->
    <persistenceAdapter>
        <kahaDB directory="${activemq.data}/kahadb"/>
    </persistenceAdapter>

    <!-- 其他 broker 配置 -->

</broker>

!> 注意 这里开启了持久化之后,对应自己的Spring程序中也需要配置同步消息的方式

在上述配置中:

  • dataDirectory 属性指定了存放所有数据,包括KahaDB在内的根目录。
  • <kahaDB> 元素定义了使用KahaDB作为持久化适配器,并通过directory属性指定了KahaDB数据库的具体位置。

如果想使用JDBC持久化,可以配置MySQL、PostgreSQL等关系型数据库,配置示例如下:

首先需要把MySql的驱动以及数据连接池jar 放到ActiveMQ的Lib目录下,

mysql-connector-java-5.1.27.jar druid-1.0.29.jar 的是阿里的数据源

<persistenceAdapter>
    <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#yourDataSource">
        <!-- 其他JDBC持久化相关配置 -->
    </jdbcPersistenceAdapter>
</persistenceAdapter>

该配置文件中的broker节点外增加以下代码(yourDataSource)

<bean id="activemq" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
    <property name="username" value="your_mysql_username"/>
    <property name="password" value="your_mysql_password"/>
    <property name="maxActive" value="200"/>
   <property name="maxWait" value="60000"/>
</bean>

oracle的配置和mysql一样,在Lib目录下,放入oracle的驱动包,然后配置一下配置文件即可。

对于不同的持久化方式,需要根据ActiveMQ官方文档提供的详细配置指南进行设置。
同时,要注意配置好数据库连接池、驱动以及其他必要的属性。
对于JDBC持久化,可能还需要额外的数据库表结构初始化步骤。

记得重启ActiveMQ服务以使配置生效。

当客户端尝试连接到ActiveMQ时,需要使用这些凭证来创建连接工厂,例如:

String userName = "wstv";
String password = "wstv1232131";
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setUserName(userName);
factory.setPassword(password);

Connection connection = factory.createConnection();
connection.start();

在上述Java代码片段中,客户端将使用配置的用户名和密码连接到ActiveMQ服务器。

5. 启动与停止服务

  • 进入解压后ActiveMQ的bin目录下。
    • 启动服务:
      [root@localhost bin]# ./activemq start
    • 停止服务:
      [root@localhost bin]# ./activemq stop

6. 访问后台管理界面

  • 打开浏览器,输入后台管理地址:
    http://192.168.25.168:8161/admin
  • 登录凭据:
    • 用户名:admin
    • 密码:admin

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值