微信公众号:Java患者
ActiveMQ 简介
ActiveMQ是基于 Java 中的 JMS 消息服务规范实现的一个消息中间件,通过中间件我们可以实现异步调用、流量削峰等。
ActiveMQ安装
-
将 apache-activemq-5.15.11-bin.tar.gz 上传到服务器
-
解压 tar -zxvf apache-activemq-5.15.11-bin.tar.gz
-
启动
进到bin目录
./activeMQ start
./activeMQ status
查看状态后 ActiveMQ not running, Active没启动.
- 输出日志到控制台,看错误信息
./activemq console
在报错信息中我们看到了hostname关键词,到百度查阅资料后是因为主机名中含有下划线,
hostnamectl set-hostname Java
通过该句命令修改主机的名字为Java,然后重新执行
./activemq start
启动成功
ActiceMQ DEMO
环境
导入相关依赖
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
</dependency>
生产者
开启一个生产者
package com.zero.day1;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* ActiveMQ测试类 Hello World
*/
public class Demo1 {
public static void main(String[] args) {
Demo1.producerQuene();
}
public static void producerQuene (){
try {
// Create a ConnectionFactory 创建工厂连接对象
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
// Create a Connection 使用连接工厂创建一个连接对象
Connection connection = connectionFactory.createConnection();
connection.start();
// Create a Session 创建会话session对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// create the destination (Topic or Quene) 创建目标对象(一对一or一对多)
Destination destination = session.createQueue("TEST.FOO1");
// Create a MessageProducer from the Session to the Topic or Quene 创建生产者对象
MessageProducer producer = session.createProducer(destination);
String text = "hello world";
// create a messages 创建一个消息对象
TextMessage message = session.createTextMessage(text);
// tell the producer to send the message 发送消息
producer.send(message);
System.out.println("发送成功");
// clean up 关闭资源
session.close();
connection.close();
} catch (Exception e) {
System.out.println("Caught" + e);
e.printStackTrace();
}
}
}
控制台
被消费者消费
public static void consumerQuene () {
try {
// create a connectionFactory 创建工厂连接对象
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
// create a connection 使用连接工厂创建一个连接对象
Connection connection = connectionFactory.createConnection();
connection.start();
//create a session 创建会话session对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// create the destination(Topic or Quene) 创建目标对象(一对一or一对多)
Destination destination = session.createQueue("TEST.FOO");
// create a MessageConsumer from the session to the Topic or Quene 创建消费者对象
MessageConsumer consumer = session.createConsumer(destination);
// wait for a message 创建一个消息对象
Message message = consumer.receive(1000);
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message ;
String text = textMessage.getText();
System.out.println("Received: " + text);
} else {
System.out.println("Received: " + message);
}
consumer.close();
session.close();
connection.close();
} catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
结语
小编是一枚Java Coder,业余写文章,现主营微信公众号《Java患者》,喜欢的话关注我的公众号或者加我微信我们一起学习Java