消息中间件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日

相关文章

  • SpringBoot 集成 activiti的示例代码

    以下是Spring Boot集成Activiti的示例代码攻略: 添加依赖项 首先,我们需要在pom.xml文件中添加Activiti和Spring Boot Starter依赖项: <dependency> <groupId>org.activiti</groupId> <artifactId>activit…

    Java 2023年5月14日
    00
  • Java实现按键精灵的示例代码

    讲解Java实现按键精灵的示例代码的攻略如下: 环境准备 首先需要安装好Java,并安装相应的开发工具,比如Eclipse、IntelliJ IDEA等。同时需要引入按键精灵的Java API,一般情况下直接将其引入到项目中即可。 示例1:模拟键盘输入 按键精灵主要用于模拟用户键盘输入,因此我们首先要实现键盘输入。 在Java中,可以使用Robot类来模拟键…

    Java 2023年5月19日
    00
  • java asp分析各种搜索引擎的关键字,自动识别url 中关键字的编码

    为了实现搜索引擎关键字分析和自动识别URL中的关键字编码,我们需要进行以下步骤: 1. 获取URL中的关键字 我们可以使用Java语言的URLDecoder类中的decode方法,对URL进行解码,得到其中的关键字。具体代码示例如下: String url = "https://www.baidu.com/s?wd=%E6%90%9C%E7%8B%…

    Java 2023年5月20日
    00
  • JSP由浅入深(5)—— Scriptlets和HTML的混合

    下面我将为你详细讲解“JSP由浅入深(5)—— Scriptlets和HTML的混合”的完整攻略,包含以下内容: Scriptlets的概念及使用 在Scriptlets中使用Java代码 Scriptlets中的变量声明与使用 Scriptlets与HTML的混合使用 示例说明 1. Scriptlets的概念及使用 Scriptlets是JSP中的一种脚…

    Java 2023年6月15日
    00
  • Java如何实现登录token令牌

    Java实现登录token令牌的方法有多种,一种较为常见的方式是利用JSON Web Token(JWT)。 什么是JWT? JWT是一种开放标准(RFC 7519),可以在不同应用程序之间安全地传递信息,该信息可以进行身份验证和授权。JWT包含三部分:头部,载荷(也称为声明)和签名。头部通常包含使用的签名算法,载荷包含请求的用户数据和其他元数据,签名用于验…

    Java 2023年5月26日
    00
  • 深入理解JVM之Class类文件结构详解

    “深入理解JVM之Class类文件结构详解”是一篇关于Java虚拟机中Class类文件结构的详细讲解文章,主要介绍了Java虚拟机中的Class文件格式、Class文件头、常量池、访问标志、类索引、父类索引、接口索引集合、实例字段表、类字段表等方面的知识点。 以下是针对每个章节的详细讲解: Class文件格式 Class文件格式是Java虚拟机中Class文…

    Java 2023年5月19日
    00
  • 三种Java求最大值的方法

    当我们在Java中处理数据时,经常需要找到一组数据中的最大值。本文将介绍三种Java求最大值的方法: 方法一:将数组转换为 List,使用 Collections.max() 方法 这种方法主要是针对数组中的元素进行比较,使用了Java提供的工具类 Collections 中的max()方法,并将数组转换成List类型。具体实现代码如下: import ja…

    Java 2023年5月26日
    00
  • java实现简单控制台通讯录

    下面是“Java实现简单控制台通讯录”的完整攻略,包含以下几个步骤。 步骤一:确定通讯录数据结构 为了存储通讯录信息,我们需要先定义一个合适的数据结构。这里我们可以使用Java中的HashMap来存储联系人的姓名和电话号码。 HashMap<String, String> contacts = new HashMap<>(); 步骤二…

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