activemq简介安装、应用介绍

本文深入解析Java消息服务(JMS)核心概念,包括Destination、Producer、Consumer等组件,阐述Queue与Topic的区别,并介绍ActiveMQ的安装、配置及安全认证策略,探讨消息持久化机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

简介
简介&应用场景

二、组件

1. Destination

目的地,JMS Provider(消息中间件)负责维护,用于对Message进行管理的对象。MessageProducer需要指定Destination才能发送消息,MessageConsumer需要指定Destination才能接收消息。

2. Producer

消息生成者(客户端、生成消息),负责发送Message到目的地。应用接口为MessageProducer。在JMS规范中,所有的标准定义都在javax.jms包中。

3.Consumer【Receiver】

消息消费者(处理消息),负责从目的地中消费【处理|监听|订阅】Message。应用接口为MessageConsumer

4. Message

消息(Message),消息封装一次通信的内容。常见类型有:StreamMessage、BytesMessage、TextMessage、ObjectMessage、MapMessage。

5. ConnectionFactory

链接工厂, 用于创建链接的工厂类型。 注意,不能和JDBC中的ConnectionFactory混淆。

6. Connection

链接. 用于建立访问ActiveMQ连接的类型, 由链接工厂创建. 注意,不能和JDBC中的Connection混淆。

7. Session

会话, 一次持久有效有状态的访问. 由链接创建. 是具体操作消息的基础支撑。

8. Queue & Topic

Queue是队列目的地,Topic是主题目的地。都是Destination的子接口。
Queue特点: 队列中的消息,默认只能由唯一的一个消费者处理。一旦处理消息删除。
Topic特点:主题中的消息,会发送给所有的消费者同时处理。只有在消息可以重复处理的业务场景中可使用。

9. PTP

Point to Point。点对点消息模型。就是基于Queue实现的消息处理方式。

10. PUB & SUB

Publish & Subscribe 。消息的发布/订阅模型。是基于Topic实现的消息处理方式。

三、安装

1. 大概步骤

略。解压后注意检查权限,需要755.
ls -al apache-activemq-5.15.6/bin
chmod 755 activemq
启动
apache-activemq-5.15.6/bin/activemq start
重启
apache-activemq-5.15.6/bin/activemq restart
关闭
apache-activemq-5.15.6/bin/activemq stop
查看进程
ps aux | grep activemq
访问web管理界面
http://ip:8161/admin/

2. 配置文件简介

2.1 activemq.xml

就是spring配置文件. 其中配置的是ActiveMQ应用使用的默认对象组件.
transportConnectors标签 - 配置链接端口信息的. 其中的端口号61616是ActiveMQ对外发布的tcp协议访问端口. 就是java代码访问ActiveMQ时使用的端口.

2.2 jetty.xml

spring配置文件, 用于配置jetty服务器的默认对象组件.
jetty是类似tomcat的一个中间件容器.
ActiveMQ默认支持一个网页版的服务查看站点. 可以实现ActiveMQ中消息相关数据的页面查看.
8161端口, 是ActiveMQ网页版管理站点的默认端口.
在ActiveMQ网页版管理站点中,需要登录, 默认的用户名和密码都是admin.

3. users.properties

用于配置客户端通过协议访问ActiveMQ时,使用的用户名和密码.
登录用户名密码默认admin=admin

四、应用

ptp、主题应用案例

1. ptp(queue)

消息被消费以后,queue中不再有存储。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了。当消费者不存在时,消息会一直保存,直到有消费消费

2. Publish/Subscribe处理模式(Topic)

消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。当生产者发布消息,不管是否有消费者。都不会保存消息
一定要先有消息的消费者,后有消息的生产者。

3. 区别

.TopicQueue
概要Publish Subscribe messaging 发布订阅消息Point-to-Point点对点
状态默认数据不落地,无状态Queue数据默认会在mq服务器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME\data\kahadb下面。也可以配置成DB存储
保障不保证publisher发布的每条数据,Subscriber都能接受到Queue保证每条数据都能被receiver接收。消息不超时
安全一般来说publisher发布消息到某一个topic时,只有正在监听该topic地址的sub能够接收到消息;如果没有sub在监听,该topic就丢失了Sender发送消息到目标Queue,receiver可以异步接收这个Queue上的消息。Queue上的消息如果暂时没有receiver来取,也不会丢失。前提是消息不超时
策略一对多的消息发布接收策略,监听同一个topic地址的多个sub都能收到publisher发送的消息。Sub接收完通知mq服务器一对一的消息发布接收策略,一个sender发送的消息,只能有一个receiver接收。receiver接收完后,通知mq服务器已接收,mq服务器对queue里的消息采取删除或其他操作

五、 安全认证

1. 开启认证

activemq.xml中broker新增以下内容,开启认证。
规则
< authorizationEntry topic=“名字” read=“用户组名” write=“用户组名” admin=“用户组名” />

<plugins>
            <!--  use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
            <jaasAuthenticationPlugin configuration="activemq" />
            <!--  lets configure a destination based authorization mechanism -->
            <authorizationPlugin>
                <map>
                    <authorizationMap>
                        <authorizationEntries>
                            <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
                            <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
                            <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
                            <authorizationEntry queue="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
                        </authorizationEntries>
                    </authorizationMap>
                </map>
            </authorizationPlugin>
        </plugins>

2. 修改用户名密码

user.properties

3. 修改用户组

group.properties

六、 消息持久化

在内存不足或服务关闭的时候讲内存中未处理完的消息持久化,支持存储到数据库中。默认持久化策略kahadb
修改持久化配置:conf/activemq.xml

1. kahadb

kahadb是一个文件型数据库。是使用内存+文件保证数据的持久化的。kahadb可以限制每个数据文件的大小。不代表总计数据容量。
特点:1、日志形式存储消息;2、消息索引以B-Tree结构存储,可以快速更新;3、完全支持JMS事务;4、支持多种恢复机制
更多细节请参考:
持久化机制及配置说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值