ActiveMQ安装以及使用简介

ActiveMQ是什么

MQ俗称消息队列,也称为消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQRabbitMQkafkaActiveMQApache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。

MQ的产品种类

    1.kafka        // 编程语言:scala。大数据领域的主流 MQ。
    2.rabbitmq     // 编程语言:erlang。基于 erlang 语言,不好修改底层,不要查找问题的原因,不建议选用。
    3.rocketmq     // 编程语言:java。适用于大型项目。适用于集群。
    4.activemq     // 编程语言:java。适用于中小型项目。

MQ最主要的作用

    1.异步。调用者无需等待。
    2.解耦。解决了系统之间耦合调用的问题。
    3.消峰。抵御洪峰流量,保护了主业务。

ActiveMQ优点缺点

特点

    1、采用异步处理模式
    2、应用系统之间解耦合
    3、支持多种传输协议:TCP,SSL,NIO,UDP等 
    4、整体架构
    5、高可用性
    6、延时发送\定时投递

缺点

    1.两个系统之间不能同步调用
    2.不能实时回复
    3.不能响应某个调用的回复

为什么使用ActiveMQ

为了:1.系统解耦、2. 异步调用、3.流量削峰

解耦

请求与主系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。
image

削峰

秒杀活动,一般会因为流量过大,导致应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。

可以缓解短时间的高流量压垮应用 用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面.

image

异步

如果采用传统的同步方式处理,系统性能会很慢。
image

应用消息队列后可以把,发邮件、短信等不是必须的业务逻辑进行异步处理,提高系统效率!

image

消息形式

    1、点对点(queue) 
    2、一对多(topic) 

安装ActiveMQ的两种方式

一、压缩包安装ActiveMQ

ActiveMQ官网:ActiveMQ官网

如图所示:

image

下载ActiveMQ 5 "Classic"版本

通过解压缩安装步骤
1.创建微服务相关文件夹
  mkdir Microservice
2.切换到Microservice文件夹
  cd usr/local/Microservice
3.将下载好的ActiveMQ通过FinalShell上传至该文件夹
4.通过tar命令解压缩下载的ActiveMQ
  tar -zxvf  (ActiveMQ版本)
5.将解压缩后的压缩包删除 将解压出来的文件夹重命名
rm -f 压缩包全名

//重命名文件夹

 mv 压缩文件全名 修改的文件名
进入bin文件夹后启动
./activemq start   //普通启动

//activemq的默认服务端口是:61616
查看61616端口命令

第一种方式:netstat -anp|grep 61616

第二种方式:lsof -i:61616

./activemq stop //关闭

如下图所示则为启动成功

image

ActiveMQ控制台
上续启动后查看控制台
访问 activemq 管理页面地址:IP地址:8161/

默认登录用户名密码均为:admin
出现如下图查看成功

image

activemq命令
//查看 activemq 状态
    service activemq status
    
//关闭 activemq 服务
    service activemq stop

二、docker-compose安装

version: '2'
services: 
  #activemq容器
  activemq:
    #name: myactivemq
    #定义主机名
    hostname: myactivemq
    #使用的镜像
    image: webcenter/activemq
    #容器的映射端口
    ports:
      - 61617:61616
      - 8162:8161
    restart: always
    #定义挂载点
    volumes:
      - ./data/activemq:/data/activemq
      - ./var/log/activemq:/var/log/activemq
执行docker-compose命令
docker-compose up -d
//执行成功出现以下命令

image

spring-boot整合ActiveMQ

点对点Queue

创建发送消息的控制器
一、导入相应的maven依赖
<!--导入springboot和ActiveMQ依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
二、创建一个发送消息的控制器
@RestController
public class SendController {

    @Resource
    private JmsMessagingTemplate jmsMessagingTemplate;

    @RequestMapping("/send")
    public String sendMessage(String message){
        //创建队列名称对象
        Queue queue=new ActiveMQQueue("测试队列1");
        //将消息发送到服务器中
        jmsMessagingTemplate.convertAndSend(queue,message);
        return "发送成功";
    }
    点对多放开下面即可
    <!--
    @RequestMapping("/send2")
    public String sendMessage2(String message){
        //创建队列名称对象(点对点)
        //发布订阅
        Topic topic=new ActiveMQTopic("测试队列1");
        //将消息发送到服务器中
        for(int i=1;i<=10;i++){
            jmsMessagingTemplate.convertAndSend(topic,message+i);
        }
        return "发送成功";
    }-->
}
三、修改配置文件后缀为yml
spring:
  activemq:
    broker-url: tcp://192.168.92.129:61616
    in-memory: true
    pool:
      enabled: false
    packages:
      trust-all: true
       #配置消息中间件的模式 false 队列模式 点对点 true 发布订阅模式 点对多
  jms:
    pub-sub-domain: true
通过浏览器或者第三方软件发送请求发送成功如下图

image

通过浏览器ActiveMQ查看消息队列

image

编写Consumer控制器监听ActiveMQ消息队列

一、导入相应的maven依赖
<!--导入springboot和ActiveMQ依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
二、创建监听消息的控制器
@Component
public class Consumer {
    //配置监听的处理方法 destination表示要处理哪个队列中的信息
    //接收到的信息会自动存放到方法的参数中
    @JmsListener(destination = "测试队列2")
    public void getMessage(String message){
        System.out.println(message);
    }
}
三、修改配置文件后缀为yml
spring:
  activemq:
    broker-url: tcp://192.168.92.129:61616
    in-memory: true
    pool:
      enabled: false
    packages:
      trust-all: true
server:
  port: 8081
#配置消息中间件的模式 false 队列模式 点对点 true 发布订阅模式 点对多
  jms:
    pub-sub-domain: true

Consumer启动类加注解
@EnableJms
监听消息队列发送的消息如下图

image

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值