ActiveMQ
# ActiveMQ
# ActiveMQ入门
# ActiveMQ是什么
- ActiveMQ是Apache出品,最流行,能力强劲的开源消息总线
- ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Privoder实现,尽管JMS规范已经是出台很久的事情了,但是JMS在当今J2EE应用中仍然扮演着特殊的地位。
# JMS规范
# JMS是什么
- Java消息服务(Java Message Service,即JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API。
# JMS对象模型
# 对象模型
- ConnectionFactory----连接工厂
- Connection----连接
- Session----会话
- Destination----目的
- MessageProducer----生产者
- MessageConsumer----消费者
- Message----消息
- Broker----消息中间件的实例(ActiveMQ)
# 通信模型
- Point to Point(P2P)/点对点

- Publish/Subscribe/主题(发布订阅)

# JMS消息结构

# 消息头----关于一些消息的描述信息
- JMSDestination----消息的目的地,Topic或Queue
- JMSDeliverMode----消息的发送模式
- JMSTimestamp----消息传递给Broker(消息中间件的实例)的时间戳,它不是实际的发送时间
- JMSExpiration----消息的有效期,有效期内,消息的消费者才能消费这个消息
- JMSPriority----消息的优先级。0-4级为正常,5-9级为高优先级
- JMSMessageID----一个字符串用来唯一标识一个消息
- JMSReplyTo----有时消息生产者希望消费者回复一个消息,JMSReplyTo为一个Destination,表示需要回复的目的地
- JMSCollectionID----通常用来关联多个Message
- JMSType----表示消息体的结构,和JMS提供者有关
- JMSRedelivery----如果这个值为true,表示消息被重新发送了
# 消息属性----可以理解为消息的附加消息头,属性名可以自定义

# 消息体
- 消息体类型
- ByteMessage----用来传递字节信息
- MapMessage----用来传递键值对信息
- ObjectMessage----用来传递序列化对象
- StreamMessage----用来传递文件等
- TextMessage----用来传递字符串
# ActiveMQ的特性
- 支持多种编程语言
- 支持多种传输协议
- 有多种持久化方式
# ActiveMQ安装
# 安装及启动/停止
- cd /tmp
- wget -c https://mirrors.bfsu.edu.cn/apache//activemq/5.16.2/apache-activemq-5.16.2-bin.tar.gz
- tar -zxvf apache-activemq-5.16.2-bin.tar.gz -C /var
- mv /var/apache-activemq-5.16.2/ /var/activemq/
- /var/activemq/bin/activemq start
- /var/activemq//bin/activemq stop
# 将ActiveMQ作为服务启动,可以确保在系统启动的时候自启动
- 使用vim创建一个systemd服务文件
vi /usr/lib/systemd/system/activemq.service
填入以下内容
[Unit] Description=ActiveMQ service After=network.target [Service] Type=forking ExecStart=/var/activemq/bin/activemq start ExecStop=/var/activemq/bin/activemq stop User=root Group=root Restart=always RestartSec=9 StandardOutput=syslog StandardError=syslog SyslogIdentifier=activemq [Install] WantedBy=multi-user.target1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18修改/var/activemq/bin/env配置,找到最后

将JAVA_HOME注释取消,填入jdk安装路径(使用whereis java命令查找安装路径)

启动ActiveMQ服务
- systemctl start activemq
查看服务状态
- systemctl status activemq
设置开机自启动
- ln -s /usr/lib/systemd/system/activemq.service /etc/systemd/system/multi-user.target.wants/activemq.service
- systemctl enable activemq
- 检测是否自启动systemctl list-unit-files | grep activemq
防火墙添加ActiveMQ端口
- 查看端口
- firewall-cmd --list-ports
- 添加端口
- #Web管理端口默认为8161,通讯端口默认为61616
- firewall-cmd --zone=public --add-port=8161/tcp --permanent
- firewall-cmd --zone=public --add-port=61616/tcp --permanent
- 重启防火墙
- systemctl restart firewalld.service
- 或者直接关闭防火墙
- systemctl stop firewalld.service
- 查看端口
# ActiveMQ使用
编辑 (opens new window)
上次更新: 2024/05/24, 11:36:46