消息中间件ActiveMQ的简单入门介绍与使用

消息中间件ActiveMQ的简单入门介绍与使用

什么是ActiveMQ

ActiveMQ是一款开源的消息中间件,它采用Java编写,完全支持JMS规范,是Apache软件基金会的顶级项目之一。ActiveMQ可以通过网络将不同应用程序之间异构的数据进行传输,是一种比较通用的解决方案。

ActiveMQ的基本概念

在了解如何使用ActiveMQ之前,有几个基本的概念需要了解:

  • Broker:消息中间件的核心部分,负责管理消息的传递和存储,以及与客户端的通信。
  • Producer:消息的生产者,向消息中间件发送消息。
  • Consumer:消息的消费者,从消息中间件接收消息。
  • Queue:点对点模式下的消息传递方式。
  • Topic:发布订阅模式下的消息传递方式。

ActiveMQ的安装

ActiveMQ是基于Java开发的,所以安装前需要准备好Java运行环境。具体安装步骤如下:

  1. 下载ActiveMQ

可以到ActiveMQ的官方网站https://activemq.apache.org/上下载最新的ActiveMQ安装包,也可以使用命令行下载:

wget https://archive.apache.org/dist/activemq/5.15.8/apache-activemq-5.15.8-bin.tar.gz
  1. 解压ActiveMQ

将下载好的安装包解压到指定目录下:

tar -zxvf apache-activemq-5.15.8-bin.tar.gz
  1. 启动ActiveMQ

进入apache-activemq-5.15.8/bin目录,执行以下命令启动ActiveMQ:

./activemq start

ActiveMQ的使用

队列模式

在队列模式中,消息生产者向队列发送消息,然后消息消费者从队列中消费消息。

创建队列

在ActiveMQ中,创建队列需要在管理页面操作,具体步骤如下:

  1. 访问http://localhost:8161/admin/queues.jsp,在页面下方点击“Create a new Queue”按钮。
  2. 在弹出的对话框中填写队列的名称,例如“testQueue”,然后点击“Create”按钮。
发送消息

可以使用Java代码向队列发送消息,示例代码如下:

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Producer {

    public static void main(String[] args) {
        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://localhost:61616");

        try (Connection connection = connectionFactory.createConnection()) {
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            Destination destination = session.createQueue("testQueue");

            MessageProducer producer = session.createProducer(destination);

            TextMessage textMessage = session.createTextMessage("Hello Queue!");

            producer.send(textMessage);

            System.out.println("消息发送成功:" + textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}
接收消息

同样可以使用Java代码从队列接收消息,示例代码如下:

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Consumer {

    public static void main(String[] args) {
        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://localhost:61616");

        try (Connection connection = connectionFactory.createConnection()) {
            connection.start();

            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            Destination destination = session.createQueue("testQueue");

            MessageConsumer consumer = session.createConsumer(destination);

            Message message = consumer.receive();

            TextMessage textMessage = (TextMessage) message;

            System.out.println("接收到的消息:" + textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}

订阅模式

在订阅模式中,消息生产者向主题发送消息,主题会将消息发送给所有订阅该主题的消息消费者。

创建主题

创建主题跟创建队列类似,只需要在管理页面中点击“Create a new Topic”按钮即可。

发送消息

发送消息的Java代码跟队列模式中的代码基本相同,代码如下:

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Publisher {

    public static void main(String[] args) {
        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://localhost:61616");

        try (Connection connection = connectionFactory.createConnection()) {
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            Destination destination = session.createTopic("testTopic");

            MessageProducer producer = session.createProducer(destination);

            TextMessage textMessage = session.createTextMessage("Hello Topic!");

            producer.send(textMessage);

            System.out.println("消息发送成功:" + textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}
接收消息

接收消息的代码跟队列模式的代码类似,代码如下:

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Subscriber {

    public static void main(String[] args) {
        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://localhost:61616");

        try (Connection connection = connectionFactory.createConnection()) {
            connection.start();

            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            Destination destination = session.createTopic("testTopic");

            MessageConsumer consumer = session.createConsumer(destination);

            Message message = consumer.receive();

            TextMessage textMessage = (TextMessage) message;

            System.out.println("接收到的消息:" + textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}

总结

本文介绍了消息中间件ActiveMQ的简单入门介绍与使用,包括ActiveMQ的基本概念、安装步骤、队列模式和订阅模式的使用方法。通过本文的介绍,读者可以初步了解ActiveMQ的基本使用方法,以及如何在Java程序中使用ActiveMQ。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:消息中间件ActiveMQ的简单入门介绍与使用 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 基于centos自己构建一个tomcat镜像的实现

    要在CentOS上构建自己的Tomcat镜像,可以按照以下步骤: 步骤1:安装Docker Docker是一种容器化平台,我们需要使用它来构建我们的Tomcat镜像。在CentOS上安装Docker的方法可以参考Docker的官方文档。 步骤2:创建一个Dockerfile 在本地创建一个文件夹,用于存储Dockerfile和相关文件,例如: $ mkdir…

    Java 2023年5月19日
    00
  • Java遍历集合方法分析(实现原理、算法性能、适用场合)

    Java遍历集合是每个Java开发者都必须学会的一个技能。它是处理集合数据的重要步骤。本文将详细讲解Java遍历集合方法的实现原理、算法性能和适用场合。 什么是Java集合 Java集合是Java语言提供的一组数据结构,用于存储数据的容器。它们是一种实用工具,可用于处理复杂的数据结构,例如列表、队列、栈、哈希表等。Java集合框架是一组接口和类的集合,用于处…

    Java 2023年5月19日
    00
  • Java8新特性之lambda(动力节点Java学院整理)

    Java8新特性之lambda——完整攻略 什么是lambda表达式 lambda表达式是一种能够传递行为的对象,是一个匿名函数,它没有名称、修饰符和返回类型,但是它可以像方法一样接受参数和返回值,并且可以被赋值给一个变量,它是Java8中一个非常重要的特性。 lambda表达式的语法 lambda表达式的语法如下: (parameter) -> ex…

    Java 2023年5月26日
    00
  • java 获取路径的各种方法(总结)

    Java 获取路径的各种方法(总结) 在Java编程中,获取路径是经常会使用到的操作。本文将总结Java中获取路径的各种方法。 方法一:System.getProperty(“user.dir”) 使用System.getProperty(“user.dir”)可以获取当前项目的根路径。 String projectPath = System.getProp…

    Java 2023年5月20日
    00
  • Java编码摘要算法实例解析

    Java编码摘要算法实例解析 在Java编程语言中,提供了一种编码摘要算法,可以将一段文本或文件转换成一段固定长度的唯一代码,称作“哈希值”或“数字指纹”。这个算法被广泛应用于身份认证、数字签名、数据完整性验证等场景中。 哈希算法概述 哈希算法将任意长度的二进制文本信息转换成固定长度的数字(通常是32、64、128或256位等长度),这个数字就是哈希值,也称…

    Java 2023年5月20日
    00
  • Java中Date,Calendar,Timestamp的区别以及相互转换与使用

    Java中Date,Calendar,Timestamp的区别以及相互转换与使用 在Java中,Date、Calendar和Timestamp是处理日期和时间的三个主要的类。本文将详细介绍它们的区别以及如何相互转换和使用。 Date类 Date类是Java中最早的日期和时间处理类。它表示从GMT(格林尼治标准时间)1970年1月1日00:00:00时间开始至…

    Java 2023年5月20日
    00
  • 详解如何在Java中调用Python程序

    完整攻略如下: 1. 安装Jython Jython是Python的一种实现,它可以与Java无缝集成。因此,在Java中调用Python程序要用到Jython。可以从Jython官网下载Jython的最新版本。安装完成后,需要将Jython的安装路径配置到Java的环境变量中。 2. 创建Python程序 首先,编写一个简单的Python程序,例如: # …

    Java 2023年5月23日
    00
  • java中Collections.sort排序函数用法详解

    Java中Collections.sort排序函数用法详解 在Java中,对于列表的排序,我们通常使用Collections.sort()函数。本文将详细讲解Collections.sort()函数的用法。 基本用法 Collections.sort()函数用于对List进行排序。其基本用法如下: Collections.sort(List<T>…

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