小李的便利店

悠优酸幽

ActiveMQ入门

目录

  • ActiveMQ是什么
  • JMS规范
  • ActiveMQ的特性
  • ActiveMQ如何安装
  • ActiveMQ如何使用

ActiveMQ是什么

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。

《ActiveMQ入门》

JMS规范

JMS是什么?

Java消息服务(Java Message Service,即JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API。

JMS的对象模型

《ActiveMQ入门》

JMS的消息模型

Point-to-Point (P2P)/点对点

《ActiveMQ入门》

Publish/Subscribe(Pub/Sub) /主题(发布订阅)

《ActiveMQ入门》

JMS的消息结构

《ActiveMQ入门》

消息头

关于一些消息的描述信息。

《ActiveMQ入门》

消息属性

可以理解为消息的附加消息头,属性名可以自定义。

《ActiveMQ入门》

消息体类型:

《ActiveMQ入门》

ActiveMQ的特性

  1. 支持多种编程语言
  2. 支持多种传输协议
  3. 有多种持久化方式

ActiveMQ如何安装

演示环境: Centos7、jdk8、activemq5.15.12

下载地址:http://activemq.apache.org/components/classic/download/

解压:tar -zxvf apache-activemq-5.15.12-bin.tar.gz -C /usr/local/activeMQ

修改目录名称:mv apache-activemq-5.15.12 activemq

启动: ./bin/activemq start
停止:./bin/activemq stop

做成系统服务

1、创建一个systemd服务文件:

vim  /usr/lib/systemd/system/activemq.service

2、放入内容:

[Unit]
Description=ActiveMQ service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/activeMQ/activemq/bin/activemq start
ExecStop=/usr/local/activeMQ/activemq/bin/activemq stop
User=root
Group=root
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=activemq

[Install]
WantedBy=multi-user.target

注意:ExecStart和ExecStop是activeMQ的安装目录。

3、 找到java命令所在的目录

whereis java

4、设置activemq配置文件/usr/local/activeMQ/activemq/bin/env中的JAVA_HOME

# Location of the java installation
# Specify the location of your java installation using JAVA_HOME, or specify the
# path to the "java" binary using JAVACMD
# (set JAVACMD to "auto" for automatic detection)
JAVA_HOME="/usr/local/java/jdk1.8.0_152"
JAVACMD="auto"

5、 通过systemctl管理activemq启停

  • 启动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
  • 检测是否开启成功(enable): systemctl list-unit-files |grep activemq

6、 防火墙配置,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界面:

http://ip:8161
《ActiveMQ入门》
访问成功的界面

ActiveMQ如何使用

测试代码

提供者

@SpringBootApplication
public class Producter {

    @Autowired
    private JmsTemplate jmsTemplate;

    @PostConstruct
    public void init(){
        jmsTemplate.convertAndSend("queue1","Hello lions.qicp.vip");
    }

    public static void main(String[] args) {
        SpringApplication.run(Producter.class,args);
    }
}

消费者

@SpringBootApplication
@EnableJms
public class Consumer {

    @JmsListener(destination = "queue1")
    public void receive(String message){
        System.out.println("收到消息:"+message);
    }

    public static void main(String[] args) {
        SpringApplication.run(Consumer.class, args);
    }
}
《ActiveMQ入门》
《ActiveMQ入门》
点赞

发表评论

电子邮件地址不会被公开。