ActiveMQ简单入门(新手必看篇)

ActiveMQ简单入门(新手必看篇)

ActiveMQ是一个流行的开源消息队列系统,它具有高可用性、高性能、多语言支持等诸多优点,被广泛应用于分布式系统的消息通信场景中。本篇文章将详细讲解ActiveMQ的入门步骤,帮助新手快速上手使用。

安装ActiveMQ

首先需要在官网(http://activemq.apache.org/)上下载ActiveMQ二进制分发包,并解压到本地。然后运行/bin/activemq start 命令启动ActiveMQ。

发送和接收消息

ActiveMQ提供了多种语言的客户端API,本文将使用Java的JMS(Java Message Service)API进行消息发送和接收,以下是演示的完整代码:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class App {
    private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
    private static String queueName = "myQueue"; // 消息队列名称

    public static void main(String[] args) throws JMSException {
        // 创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        // 创建连接
        Connection connection = connectionFactory.createConnection();

        // 启动连接
        connection.start();

        // 创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        // 创建队列
        Destination destination = session.createQueue(queueName);

        // 创建生产者
        MessageProducer producer = session.createProducer(destination);

        // 创建消息
        TextMessage message = session.createTextMessage("Hello ActiveMQ!");

        // 发送消息
        producer.send(message);

        System.out.println("消息发送成功!");

        // 创建消费者
        MessageConsumer consumer = session.createConsumer(destination);

        // 接收消息
        Message receivedMessage = consumer.receive();

        // 打印消息内容
        System.out.println(((TextMessage) receivedMessage).getText());

        // 关闭连接
        connection.close();
    }
}

该代码演示了如何使用JMS API发送和接收消息,代码注释中包含了详细的解释。

消息持久化

在上面的演示中,我们只实现了简单的消息发送和接收,但是这些消息都仅存在于内存中,程序重启后将会丢失。如果需要将消息持久化到磁盘上,可以使用ActiveMQ提供的消息持久化机制。以下是修改后的代码:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class App {
    private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
    private static String queueName = "myQueue"; // 消息队列名称

    public static void main(String[] args) throws JMSException {
        // 创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        // 创建连接
        Connection connection = connectionFactory.createConnection();

        // 启动连接
        connection.start();

        // 创建会话
        Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);

        // 创建队列
        Destination destination = session.createQueue(queueName);

        // 创建生产者
        MessageProducer producer = session.createProducer(destination);

        // 创建消息
        TextMessage message = session.createTextMessage("Hello ActiveMQ!");

        // 发送消息
        producer.send(message);

        System.out.println("消息发送成功!");

        session.commit(); // 提交会话以将消息持久化到磁盘

        // 创建消费者
        MessageConsumer consumer = session.createConsumer(destination);

        // 接收消息
        Message receivedMessage = consumer.receive();

        // 打印消息内容
        System.out.println(((TextMessage) receivedMessage).getText());

        // 关闭连接
        connection.close();
    }
}

在上述代码中,我们将会话创建方式修改为“开启消息事务”,并在发送消息后使用session.commit()命令提交会话以将消息持久化到磁盘上。

示例1:使用Spring JMS Template发送和接收消息

以下是演示如何使用Spring JMS Template发送和接收消息的代码:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.jms.core.JmsTemplate;

public class App {
    private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
    private static String queueName = "myQueue"; // 消息队列名称

    public static void main(String[] args) throws JMSException {
        // 创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        // 创建JMS Template
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(connectionFactory);

        // 发送消息
        jmsTemplate.send(queueName, session -> session.createTextMessage("Hello ActiveMQ!"));

        System.out.println("消息发送成功!");

        // 接收消息
        String receivedMessage = (String) jmsTemplate.receiveAndConvert(queueName);

        // 打印消息内容
        System.out.println(receivedMessage);
    }
}

该代码使用了Spring JMS Template简化了JMS API的使用,代码注释中包含了详细的解释。

示例2:使用ActiveMQ发送和接收非文本消息

以下是演示如何使用ActiveMQ发送和接收非文本消息的代码:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class App {
    private static String url = "tcp://localhost:61616"; // ActiveMQ服务器地址
    private static String queueName = "myQueue"; // 消息队列名称

    public static void main(String[] args) throws JMSException {
        // 创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        // 创建连接
        Connection connection = connectionFactory.createConnection();

        // 启动连接
        connection.start();

        // 创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        // 创建队列
        Destination destination = session.createQueue(queueName);

        // 创建生产者
        MessageProducer producer = session.createProducer(destination);

        // 创建消息
        BytesMessage message = session.createBytesMessage();
        message.writeBytes("Hello ActiveMQ!".getBytes());

        // 发送消息
        producer.send(message);

        System.out.println("消息发送成功!");

        // 创建消费者
        MessageConsumer consumer = session.createConsumer(destination);

        // 接收消息
        Message receivedMessage = consumer.receive();

        // 打印消息内容
        BytesMessage bytesMessage = (BytesMessage) receivedMessage;
        byte[] buffer = new byte[(int) bytesMessage.getBodyLength()];
        bytesMessage.readBytes(buffer);
        System.out.println(new String(buffer));

        // 关闭连接
        connection.close();
    }
}

该代码演示了如何使用BytesMessage发送和接收字节流类型的消息,其中的代码注释中包含了详细的解释。

总结

本篇文章详细讲解了ActiveMQ的入门步骤,并提供了多个演示的代码示例,帮助新手快速上手使用ActiveMQ。希望本文能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ActiveMQ简单入门(新手必看篇) - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 在js文件中如何获取basePath处理js路径问题

    获取basePath处理js路径问题是一个常见的需求。以下是如何在JS文件中获取basePath的完整攻略: 首先,在HTML文件中设置meta标签,将basePath存储到meta标签中: <head> <meta name="basePath" content="http://www.example.com…

    Java 2023年6月15日
    00
  • 详解idea搭建springboot+mybatis框架的教程

    下面我会详细讲解“详解idea搭建springboot+mybatis框架的教程”的完整攻略。 1. 准备工作 首先,我们需要确保已经安装了以下软件: JDK(Java Development Kit): 版本应该为 1.8 或更高 IntelliJ IDEA: 推荐使用最新版,也可以使用其他的Java开发工具,如Eclipse等 Maven: 确保已经安装…

    Java 2023年5月19日
    00
  • spring boot写java web和接口

    我为你详细讲解“Spring Boot写Java Web和接口”的完整攻略。首先,我们需要使用Maven构建基于Spring Boot的Web应用程序,并且需要在pom.xml文件中添加如下配置: <dependency> <groupId>org.springframework.boot</groupId> <ar…

    Java 2023年5月19日
    00
  • IntelliJ IDEA 2020.3 EAP5:引入 ML 编码,Git Stage 支持

    下面我来为您详细讲解“IntelliJ IDEA 2020.3 EAP5:引入 ML 编码,Git Stage 支持”的完整攻略。 什么是IntelliJ IDEA 2020.3 EAP5 IntelliJ IDEA是一款由JetBrains公司开发的Java集成开发环境。2020.3是其最新版本,而EAP5是该版本的一个预览版,其中包含了一些新的特性和改进…

    Java 2023年5月20日
    00
  • JSONObject使用方法详解

    JSONObject使用方法详解 什么是JSONObject? JSONObject是Java中的JSON处理库之一,它提供了一些方法来创建,解析和操作JSON数据。它是一个无序的键值对集合,其中的键唯一且不可重复,值可以是任意类型的数据,包括其他JSONObject和JSONArray实例。 JSONObject的用法 创建JSONObject对象 可以使…

    Java 2023年5月26日
    00
  • Spring MVC拦截器的基本使用方法

    Spring MVC拦截器的基本使用方法 在 Spring MVC 中,拦截器是一种非常有用的机制,可以在请求到达控制器之前或之后执行一些操作。本文将详细讲解 Spring MVC 拦截器的基本使用方法,包括如何创建拦截器、如何配置拦截器、如何使用拦截器等。 创建拦截器 在 Spring MVC 中,我们可以通过实现 HandlerInterceptor 接…

    Java 2023年5月18日
    00
  • C#/Java连接sqlite与使用技巧

    C#/Java连接SQLite 简介 SQLite是一种轻型的关系数据库管理系统,可以在各种操作系统上运行。由于其占用空间小、处理数据速度快、易于集成、可移植性好等优点,越来越多的开发者选择应用它。C#和Java是常用的编程语言,以下将介绍如何用它们连接SQLite,以及如何使用SQLite相关技巧。 C#连接SQLite 准备工作 要使用SQLite连接C…

    Java 2023年5月20日
    00
  • Mybatis-Plus时间范围查询方式详解

    Mybatis-Plus时间范围查询方式详解 Mybatis-Plus是Mybatis的增强版,提供了多样化的查询方式,其中涉及到时间范围查询的内容,本篇文章就来详细讲解一下Mybatis-Plus中时间范围查询的使用方法。 1. 时间范围查询方式 Mybatis-Plus提供了4种时间范围查询方式,包括: 普通方式:通过where条件语句查询 Lambda…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部