ActiveMQ

1.3ActiveMQ 下载与安装
1.3.1 下载
官方网站下载: http://activemq.apache.org/
1.3.2 安装( Linux
(1)将 apache-activemq-5.12.0-bin.tar.gz 上传至服务器
(2)解压此文件
        tar zxvf apache-activemq-5.12.0-bin.tar.gz
(3)为 apache-activemq-5.12.0 目录赋权
        chmod 777 apache-activemq-5.12.0
(4)进入 apache-activemq-5.12.0\bin 目录
(5)赋与执行权限
         chmod 755 activemq
-------------------------------------- 知识点小贴士 --------------------------
linux 命令 chmod 755 的意思
chmod Linux 下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。
一般是三个数字:
第一个数字表示 文件所有者 的权限
第二个数字表示 与文件所有者同属一个用户组的其他用户 的权限
第三个数字表示 其它用户组 的权限
权限分为三种: 读( r=4 ),写( w=2 ),执行( x=1 。 综合起来还有可读可执行( rx=5=4+1 )、
可读可写( rw=6=4+2 )、可读可写可执行 (rwx=7=4+2+1)
所以, chmod 755 设置用户的权限为:
1. 文件所有者可读可写可执行 --7
2. 与文件所有者同属一个用户组的其他用户可读可执行 --5
3. 其它用户组可读可执行 --5
1.3.3 启动
./activemq start
出现下列提示表示成功!

 

假设服务器地址为 192.168.25.135 ,打开浏览器输入地址
http://192.168.25.135:8161/ 即可进入 ActiveMQ 管理页面

 

 点击进入管理页面

 输入用户名和密码 均为 admin

进入主界面

 

点对点消息列表:

 

列表各列信息含义如下:
Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。
Number Of Consumers 消费者 这个是消费者端的消费者数量
Number Of Consumers 消费者 这个是消费者端的消费者数量
Messages Dequeued 出了队列的消息 可以理解为是消费这消费掉的数量。
2. JMS 入门小 Demo
2.1 点对点模式
点对点的模式主要建立在一个队列上面,当连接一个列队的时候,发送端不需要知道接
收端是否正在接收,可以直接向 ActiveMQ 发送消息,发送的消息,将会先进入队列中,如
果有接收端在监听,则会发向接收端,如果没有接收端接收,则会保存在 activemq 服务器,
直到接收端接收消息,点对点的消息模式可以有多个发送端,多个接收端,但是一条消息,
只会被一个接收端给接收到,哪个接收端先连上 ActiveMQ ,则会先接收到,而后来的接收
端则接收不到那条消息。
2.1.1 消息生产者
(1)创建工程 jmsDemo ,引入依赖

 

< dependency >
< groupId > org.apache.activemq </ groupId >
< artifactId > activemq-client </ artifactId >
< version > 5.13.4 </ version >
</ dependency >
(2)创建类 QueueProducer main 方法代码如下:
//1.创建连接工厂
ConnectionFactory connectionFactory=new
ActiveMQConnectionFactory("tcp://192.168.25.135:61616");

//2.获取连接
Connection connection = connectionFactory.createConnection();

//3.启动连接

connection.start();

//4.获取 session (参数 1:是否启动事务,参数 2:消息确认模式)

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

//5.创建队列对象

Queue queue = session.createQueue("test-queue");

//6.创建消息生产者

MessageProducer producer = session.createProducer(queue); 

//7.创建消息

TextMessage textMessage = session.createTextMessage("欢迎来到这个世界");

//8.发送消息 

producer.send(textMessage);

//9.关闭资源

producer.close(); 

session.close();

connection.close();
上述代码中第 4 步创建 session 的两个参数:
1 个参数 是否使用事务
2 个参数 消息的确认模式
AUTO_ACKNOWLEDGE = 1 自动确认
CLIENT_ACKNOWLEDGE = 2 客户端手动确认
DUPS_OK_ACKNOWLEDGE = 3 自动批量确认
SESSION_TRANSACTED = 0 事务提交并确认
运行后通过 ActiveMQ 管理界面查询

 2.1.2 消息消费者

创建类 QueueConsumer main 方法代码如下:

//1.创建连接工厂


ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");

//2.获取连接 

Connection connection = connectionFactory.createConnection();

//3.启动连接

connection.start(); 

//4.获取 session (参数 1:是否启动事务,参数 2:消息确认模式)

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

//5.创建队列对象

Queue queue = session.createQueue("test-queue"); 

//6.创建消息消费

MessageConsumer consumer = session.createConsumer(queue);

//7.监听消息 
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage)message;
try {
System.out.println("接收到消息:"+textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
});

//8.等待键盘输入
System.in.read();
//9.关闭资源
consumer.close();
session.close();
connection.close();

 执行后看到控制台输出

接收到消息:欢迎来到这个世界

2.1.3 运行测试

同时开启 2 个以上的消费者,再次运行生产者,观察每个消费者控制台的输出,会发现只有
一个消费者会接收到消息。
2.2 发布 / 订阅模式
2.2.1 消息生产者
创建类 TopicProducer main 方法代码如下:
//1.创建连接工厂
ConnectionFactory connectionFactory=new
ActiveMQConnectionFactory("tcp://192.168.25.135:61616");
//2.获取连接
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.获取 session (参数 1:是否启动事务,参数 2:消息确认模式)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建主题对象
Topic topic = session.createTopic("test-topic");
//6.创建消息生产者
MessageProducer producer = session.createProducer(topic);
//7.创建消息
TextMessage textMessage = session.createTextMessage("欢迎来到这个世界");
//8.发送消息
producer.send(textMessage);
//9.关闭资源
producer.close();
session.close();
connection.close();
运行效果如下:
2.2.2 消息消费者
创建类 TopicConsumer ,main 方法代码如下:
//1.创建连接工厂
ConnectionFactory connectionFactory=new
ActiveMQConnectionFactory("tcp://192.168.25.135:61616");
//2.获取连接
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.获取 session (参数 1:是否启动事务,参数 2:消息确认模式)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建主题对象
//Queue queue = session.createQueue("test-queue");
Topic topic = session.createTopic("test-topic");
//6.创建消息消费
MessageConsumer consumer = session.createConsumer(topic);
//7.监听消息
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {

TextMessage textMessage=(TextMessage)message;
try {
System.out.println("接收到消息:"+textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
});
//8.等待键盘输入
System.in.read();
//9.关闭资源
consumer.close();
session.close();
connection.close();

2.2.3 运行测试
同时开启 2 个以上的消费者,再次运行生产者,观察每个消费者控制台的输出,会发现
每个消费者会接收到消息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值