ActiveMQ消息队列学习笔记

本文详细介绍了ActiveMQ的使用,从为什么要使用消息队列,到JMS规范,再到ActiveMQ的特点和安装。通过实例演示了点对点、发布订阅模式的实现,以及消息的持久化到MySQL。同时,讲解了ActiveMQ在Spring MVC中的应用。
摘要由CSDN通过智能技术生成

ActiveMQ

ActiveMQ(Message Queue)内容

  1. 为什么要使用MQ
  2. JMS(Java Message Service)规范
  3. JMS核心的API
  4. JMS消息类型
  5. ActiveMQ是什么
  6. ActiveMQ的特点
  7. ActiveMQ的安装
  8. Hello World程序(包括点对点、发布订阅)
  9. ActiveMQ消息持久化到MySQL(持久化消息、消息选择器)
  10. 用户注册和异步下发邮件的例子

1. 为什么要使用MQ

主要系统间通信的问题

  1. 降低系统间的耦合性
  2. 设置流量缓冲,防止接口被冲垮
  3. 将非关键链路进行异步化(异步通信)

2. JMS(Java Message Service)java 消息服务

  • JMS是JAVA EE规范之一
  • JMS规范指出消息的传递应该是异步的、非阻塞的;

3. JMS的核心API

  1. ConnectionFactory:创建连接的工场

  2. Connection:客户端和MQ服务器的一次连接

  3. Session:一次会话,创建消息生产者、消息消费者、消息队列、创建消息

  4. Destination:消息目的地

    生产者生产消息的目的地

    消息者消费消息的来源

    Queue

    Topic

  5. MessageProducer:消息生产者

  6. MessageConsumer:消息消费者

  7. Message

    TextMessage

    MapMessage

    ObjectMessage

    BytesMessage

    StreamMessage

  8. MessageListener:消息监听器,用于监控队列的消息

4. JMS消息类型

  1. 点对点消息类型(P2P)

    一条消息只能被一个消费者消费

  2. 发布、订阅类型(Pub/Sub)

    一条消息可以被多个消费者消费

    生产者和消费者有时间上的依赖性,生产者在发送消息的时候,应该至少有一个消费者处于在线状态;可以创建一个持久化消费者解决时间依赖性的问题;

5. 什么是ActiveMQ

​ ActiveMQ是最受欢迎的、功能强大的开源消息传递和集成服务器;

​ ActiveMQ速度快,支持多语言客户端和协议,非常容易进行企业级集成,包括很多高级特性,完全支持JMS1.1和J2EE1.4。基于Apache2.0许可证开源;

6. ActiveMQ的特点

  1. 支持多语言客户端和协议,如Java、C、C++、Ruby、Perl、Python、PHP
  2. 支持许多高级特性,如消息分组、虚拟目的地、通配符、组合目的地;
  3. 完全支持JMS1.1和J2EE1.4;
  4. 可以很容易集成到spring应用程序中;
  5. 通过大部分j2ee服务器的测试,如TomEE、JBoss、WebLogic等;
  6. 支持高效的JDBC持久化方式;
  7. 集群的支持;

7. 安装单机版ActiveMQ

  1. 解压apache-activemq-5.15.3-bin.zip到当前目录

  2. 启动ActiveMQ

    • Windows

      双击bin/wind64/activemq.bat

    • MAC OS

      bin/activemq start

  3. 访问控制台

    http端口号:8161

    页面访问地址:http://localhost:8161/admin

    用户名和密码:都是admin

8. 开发Hello World程序

  • maven依赖

    <!-- javax.jms-api -->
    <dependency>
      <groupId>javax.jms</groupId>
      <artifactId>javax.jms-api</artifactId>
      <version>2.0.1</version>
    </dependency>
    <!-- activemq-broker -->
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
      <version>5.15.3</version>
    </dependency>
    <!-- activemq-pool -->
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-pool</artifactId>
      <version>5.15.3</version>
    </dependency>
    

8.1 测试点对点例子

HelloProducer

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class HelloProducer {
   
    private static final String NAME = null;
    private static final String PASSWORD = null;
    // 这里的端口号不是8161,而是61616
    private static final String URL = "tcp://localhost:61616";

    public static void main(String[] args) throws JMSException {
   
        // 1. 创建连接工场ConnectionFactory
        ConnectionFactory factory = new
            ActiveMQConnectionFactory(NAME, PASSWORD, URL);

        // 2. 创建连接,并调用start()
        Connection connection = factory.createConnection();
        connection.start();

        // 3. 创建Session
        // 参数(是否开启事务, 消息签收方式)
        Session session = connection.createSession(false,
                Session.AUTO_ACKNOWLEDGE);

        // 4. 创建Destination - Queue
        // 这里的参数就是队列名称,如果队列不存在,则自动创建消息队列
        Queue queue = session.createQueue("hello");

        // 5. 创建消息生产者
        MessageProducer producer = session.createProducer(queue);

        // 6. 创建消息
        for (int i = 1; i <= 10;) {
   
            TextMessage message = session.createTextMessage("这是第" + i++ + &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值