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

yizhihongxing

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

相关文章

  • XML与HTML的结合(上)

    下面我来为您详细讲解“XML与HTML的结合(上)”的完整攻略。 首先,让我们先明确一下XML和HTML的区别。HTML(Hypertext Markup Language)是一种用于创建网页的标记语言,而XML(Extensible Markup Language)则是一种通用的标记语言,用于描述数据。 因为XML具有更加灵活的结构和语法,所以可以用来描述…

    Java 2023年5月23日
    00
  • Javaweb工程运行报错HTTP Status 404解决办法

    针对Javaweb工程运行报错HTTP Status 404的情况,可以按照以下步骤来解决: 1. 确认Servlet容器是否正常启动 第一步是确认Servlet容器是否正常启动。如果Servlet容器未正常启动,那么网站无法访问,就会出现404错误。在确认Servlet容器是否正常启动时,可以参照以下示例代码: $netstat -ano | findst…

    Java 2023年6月15日
    00
  • 浅析Java中Data类的应用

    浅析Java中Data类的应用 什么是Data类 Data类是Java中常用的日期操作类,用于处理日期和时间,并提供了对日期和时间的格式化,解析,计算以及转换等操作。 Data类位于java.util包中,可以通过import java.util.Data;来引入。 Data类的基本用法 创建Data对象 在Java中,我们可以通过多种方式创建Data对象。…

    Java 2023年5月20日
    00
  • Java简单工厂模式详细解释

    Java简单工厂模式详细解释 简介 简单工厂模式是创建型模式的一种,它提供了一种创建对象的最佳方法。在简单工厂模式中,我们在创建对象的时候不会对客户端暴露创建逻辑,而是通过一个公共的静态方法返回一个新的对象。简单工厂模式属于类的创建型模式,在工厂类中,选择创建哪一种产品类的实例化是由工厂来决定的,而并非由客户端来决定。 实现 简单工厂模式的实现需要下面几个角…

    Java 2023年5月19日
    00
  • Spring Boot如何配置内置Tomcat的maxPostSize值

    在Spring Boot中,我们可以通过配置内置Tomcat的maxPostSize值来控制POST请求的最大允许大小。下面我将详细讲解如何实现此功能。 方法一:通过配置application.properties文件 我们可以在Spring Boot项目的application.properties文件中添加以下配置: # 设置内置Tomcat的maxPo…

    Java 2023年5月20日
    00
  • java实现/创建线程的几种方式小结

    Java实现/创建线程的几种方式小结 在Java中,实现线程的方式有多种,本文将对这些方式进行详细的介绍和说明。 继承Thread类 继承Thread类是实现线程的最简单的方式之一。具体实现如下: public class MyThread extends Thread { public void run(){ System.out.println(&quo…

    Java 2023年5月18日
    00
  • 教你如何使用Java多线程编程LockSupport工具类

    教你如何使用Java多线程编程LockSupport工具类 什么是LockSupport LockSupport是JavaSE 5引入的一个工具类,用于线程的阻塞和唤醒。它可以在任何时刻,让一个正在运行的线程阻塞或者唤醒它。 LockSupport的使用 park()方法 LockSupport类下的park方法可以阻塞线程,直到调用它的unpark方法或者…

    Java 2023年5月18日
    00
  • Java虚拟机工作原理

    Java虚拟机工作原理 Java虚拟机(JVM)是Java平台的核心组件之一,它负责在Java程序运行时解释执行Java字节码。Java程序在执行的时候,需要先通过编译器将Java源代码转换成Java字节码,然后交由JVM运行。JVM提供了一种平台无关性的解决方案,具有高效、安全、可移植等特点,在Java开发中扮演了至关重要的角色。 JVM的组成 JVM主要…

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