
Apache ActiveMQ 是一个开源的消息中间件,实现了 Java 消息服务 (Java Message Service, JMS) 规范。它提供了消息队列和发布/订阅模型,支持多种协议(如 AMQP、MQTT 等),并且可以跨多个平台运行。本文将详细介绍如何在 Linux 系统上安装和启动 Apache ActiveMQ。
在开始安装之前,请确保您的系统已经安装了以下软件:
如果您还没有安装 JDK,可以通过以下命令在 Ubuntu 上安装 OpenJDK 11:
sudo apt update
sudo apt install openjdk-11-jdk验证安装是否成功:
java -version访问 Apache ActiveMQ 官方网站,下载最新版本的 ActiveMQ。例如,下载 5.16.3 版本:
wget https://downloads.apache.org/activemq/5.16.3/apache-activemq-5.16.3-bin.tar.gz下载完成后,解压安装包到指定目录,例如 /opt:
sudo tar -xzf apache-activemq-5.16.3-bin.tar.gz -C /opt进入解压后的目录:
cd /opt/apache-activemq-5.16.3ActiveMQ 提供了一个简单的脚本来启动服务。在安装目录下执行以下命令:
bin/activemq start这将启动 ActiveMQ 服务,并将其作为后台进程运行。您可以使用以下命令查看 ActiveMQ 的日志输出:
tail -f data/activemq.logActiveMQ 默认监听 61616 端口用于 JMS 连接,8161 端口用于 Web 控制台。打开浏览器并访问以下 URL 来验证安装是否成功:
http://localhost:8161/admin/默认的用户名和密码都是 admin。登录后,您将看到 ActiveMQ 的管理界面,可以在这里监控和管理队列、主题等。
如果您需要停止 ActiveMQ 服务,可以使用以下命令:
bin/activemq stopActiveMQ 的配置文件位于 conf 目录下,主要的配置文件是 activemq.xml。您可以根据需要修改这些配置文件来调整 ActiveMQ 的行为,例如更改端口号、设置持久化策略等。
如果您需要更改 ActiveMQ 的端口号,可以在 conf/activemq.xml 文件中找到以下部分并进行修改:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>ActiveMQ 支持多种持久化策略,包括 KahaDB 和 JDBC。默认情况下,ActiveMQ 使用 KahaDB 作为持久化存储。如果您需要使用 JDBC,可以在 conf/activemq.xml 文件中进行配置。
如果无法通过浏览器访问 Web 控制台,请检查以下几点:
conf/jetty.xml 文件中的端口号配置是否正确。如果日志文件没有更新,可能是日志路径或权限问题。请检查 conf/log4j.properties 文件中的日志路径配置,并确保 ActiveMQ 有写入日志文件的权限。
Apache ActiveMQ 是一个非常流行的开源消息中间件,支持多种消息协议,包括 JMS(Java Message Service)。下面我将详细介绍如何在 Linux 系统上安装和启动 Apache ActiveMQ,并提供一些示例代码来展示如何使用 JMS 进行消息发送和接收。
首先,你需要从 Apache ActiveMQ 的官方网站下载最新版本的 ActiveMQ。假设你使用的是 Linux 系统,可以通过以下命令下载:
wget https://downloads.apache.org/activemq/5.16.3/apache-activemq-5.16.3-bin.tar.gz下载完成后,解压文件到你希望安装的目录:
tar -xzf apache-activemq-5.16.3-bin.tar.gz -C /opt/进入解压后的目录并启动 ActiveMQ:
cd /opt/apache-activemq-5.16.3/bin
./activemq start你可以通过访问 http://localhost:8161/admin 来确认 ActiveMQ 是否成功启动。默认的用户名和密码是 admin/admin。
如果你使用 Maven 来管理项目,需要在 pom.xml 文件中添加 ActiveMQ 的依赖:
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.16.3</version>
</dependency>
</dependencies>import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsProducer {
public static void main(String[] args) {
try {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = connectionFactory.createConnection();
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目的地(队列)
Destination destination = session.createQueue("TEST.QUEUE");
// 创建消息生产者
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 创建消息
TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
// 发送消息
producer.send(message);
System.out.println("Sent message: " + message.getText());
// 关闭资源
producer.close();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsConsumer {
public static void main(String[] args) {
try {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = connectionFactory.createConnection();
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目的地(队列)
Destination destination = session.createQueue("TEST.QUEUE");
// 创建消息消费者
MessageConsumer consumer = session.createConsumer(destination);
// 接收消息
Message message = consumer.receive(1000); // 等待1秒
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message: " + textMessage.getText());
}
// 关闭资源
consumer.close();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}确保 ActiveMQ 已经启动,然后分别运行 JmsProducer 和 JmsConsumer 类。你应该会看到消息被成功发送和接收的输出。
Apache ActiveMQ 是一个非常流行的开源消息中间件,支持多种消息协议,包括 JMS(Java Message Service)。下面将详细介绍如何在本地环境中安装和启动 Apache ActiveMQ,并通过 Java 代码示例展示如何使用 JMS 连接到 ActiveMQ。
tar -xzf apache-activemq-5.16.3-bin.tar.gz -C /opt/bin 目录添加到系统的 PATH 环境变量中。编辑 ~/.bashrc 或 ~/.profile 文件,添加以下内容:export ACTIVEMQ_HOME=/opt/apache-activemq-5.16.3
export PATH=$PATH:$ACTIVEMQ_HOME/binsource ~/.bashrcbin/activemq starthttp://localhost:8161/admin 来管理 ActiveMQ。默认的用户名和密码是 admin/admin。首先,确保你的项目中包含了 ActiveMQ 的 JMS 客户端库。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.16.3</version>
</dependency>以下是一个简单的 Java 示例,展示了如何创建一个 JMS 连接、发送和接收消息。
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsProducer {
public static void main(String[] args) {
// ActiveMQ 连接工厂
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("TEST.QUEUE");
// 创建消息生产者
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 创建消息
TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
// 发送消息
producer.send(message);
System.out.println("Sent message: " + message.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsConsumer {
public static void main(String[] args) {
// ActiveMQ 连接工厂
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("TEST.QUEUE");
// 创建消息消费者
MessageConsumer consumer = session.createConsumer(destination);
// 接收消息
TextMessage message = (TextMessage) consumer.receive(10000);
if (message != null) {
System.out.println("Received message: " + message.getText());
} else {
System.out.println("No message received.");
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}以上步骤和代码示例展示了如何在本地安装和启动 Apache ActiveMQ,以及如何使用 Java 代码通过 JMS 连接到 ActiveMQ 并发送和接收消息。希望这些信息对你有所帮助!如果有任何问题或需要进一步的帮助,请随时提问。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。