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日

相关文章

  • Spring Boot之FilterRegistrationBean-自定义Filter详解

    下面是对于“Spring Boot之FilterRegistrationBean-自定义Filter详解”的完整攻略。 什么是FilterRegistrationBean? FilterRegistrationBean是Spring提供的一个Bean,用于将Filter(过滤器)注册到Servlet容器中的过程中进行拦截,进而实现自定义Filter。 如何使…

    Java 2023年5月31日
    00
  • Java的Struts框架报错“NoSuchSubscribedEventException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NoSuchSubscribedEventException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此。在这种情况下,需要检查文件以解决此问题。 事件名称错误:如果事件名称不正确,则可能出现此。在这种情况下,需要检查事件名称以解决此问题。 以下是两个实例: 例 …

    Java 2023年5月5日
    00
  • Spring实现文件上传(示例代码)

    添加依赖 进行文件上传需要添加相关依赖,包括spring-webmvc、spring-context和commons-fileupload。 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</art…

    Java 2023年6月15日
    00
  • Java实现字符串和输入流的相互转换

    下面是“Java实现字符串和输入流的相互转换”的完整攻略: 1. 字符串转输入流 可以使用Java中的StringBufferInputStream或ByteArrayInputStream将字符串转化为输入流对象。 使用StringBufferInputStream String str = "Hello, World!"; Input…

    Java 2023年5月26日
    00
  • Java 数据结构之时间复杂度与空间复杂度详解

    Java 数据结构之时间复杂度与空间复杂度详解 什么是时间复杂度和空间复杂度 在了解时间复杂度和空间复杂度之前,我们需要先了解一下什么是复杂度。 在计算机科学中,复杂度是指算法的性能指标,主要包括时间复杂度和空间复杂度。 时间复杂度是指算法在执行过程中所需要的时间资源,通常用执行次数来表示,也被称为算法的渐进时间复杂度。 空间复杂度是指算法在执行过程中所需要…

    Java 2023年5月26日
    00
  • SpringMVC配置与使用详细介绍

    以下是关于“SpringMVC配置与使用详细介绍”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用的Java Web开发框架,它可以帮助开发者快速构建Web应用程序。本攻略将详细讲解SpringMVC的配置与使用方法,帮助读者更好地掌握SpringMVC框架的使用方法。 2. SpringMVC的配置方法 以下是SpringMVC的配…

    Java 2023年5月16日
    00
  • 什么是垃圾收集器接口?

    以下是关于垃圾收集器接口的详细讲解: 什么是垃圾收集器接口? 垃圾收集器接口是 Java 虚拟机提供的一组接口,用于实现自定义的垃圾收集器。通过实现垃圾收集器接口,可以自定义垃圾收集器的行为和策略,以满足不同的应用场景和需求。 垃圾收集器接口包括以下几个接口: Collector:垃圾收集器接口,定义了垃圾收集的基本行为和策略。 MemoryPoolMXBe…

    Java 2023年5月12日
    00
  • Struts2拦截器登录验证实例

    下面是“Struts2拦截器登录验证实例”的完整攻略。 1. 确认需求 首先,我们需要明确需求,即需要在 Struts2 项目中添加登录验证功能。具体来说就是,用户在访问某些敏感页面时,必须先登录才能查看。 2. 创建登录页面和验证页面 第二步,我们需要创建登录页面和验证页面。在登录页面中,需要输入用户名和密码,然后提交表单。在验证页面中,需要根据提交的用户…

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