java连接activeMQ

This commit is contained in:
sookie 2018-11-02 17:26:03 +08:00
parent 55fa25484c
commit f59c9ab924
3 changed files with 89 additions and 2 deletions

View File

@ -3,6 +3,8 @@ title: 消息中间件(1)-初见
date: 2018-10-24 10:57:22
categories:
- Java
tags:
- JMS
---
### 中间件
@ -13,6 +15,15 @@ categories:
### 消息中间件
关注**数据的发送和接收**, 利用高效可靠的异步消息传递机制集成**分布式**系统
不同的模块或者服务之间利用消息中间件进行间接的交互, 可以降低耦合度
也可以适应容灾的需要, 避免由于一个服务出现问题对其他服务造成重大影响
比如A服务一个业务功能执行时需要发送一份通知邮件
发送邮件的服务可以独立出来
由A服务向消息中间件发送有关于邮件的消息, 发送邮件服务负责从消息中间件获取这些消息进行对应的处理
如果由A服务直接调用邮件服务
若邮件服务出现问题, 比如响应缓慢, 那么A服务的正常业务功能就会受到重大影响
### JMS
Java消息服务(Java Message Service) 即JMS, 是一个Java平台中关于面向消息中间件的API, 用于在两个程序之间, 或分布式系统中发送消息, 进行异步通信
@ -53,7 +64,6 @@ bin/activemq start > /dev/null 2>&1 &
#停止
bin/activemq stop
```
ActiveMQ启动会占用2个端口
默认的管理页面端口是8161, 用浏览器访问可以打开管理页面
默认的用户名和密码是admin/admin
@ -65,5 +75,6 @@ ActiveMQ启动会占用2个端口
注意格式为`用户名: 密码,角色1,角色2...`
61616为ActiveMQ的默认通讯端口
ActiveMQ的默认通讯端口有5个, 用于支持不同的协议
设定在`conf/activemq.xml`当中
![通讯端口设定](/images/Java/消息队列/transport.png)

View File

@ -0,0 +1,76 @@
---
title: 消息中间件(2)-java连接ActiveMQ
date: 2018-11-2 15:59:34
categories:
- Java
tags:
- JMS
---
使用java连接activeMQ
### 引入依赖
```xml
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.7</version>
</dependency>
```
<!-- more -->
### 1.连接ActiveMQ
```java
//step1 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.142.128:61616");
//step2 创建连接
Connection connection = connectionFactory.createConnection();
//step3 启动连接
connection.start();
//step4 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 第一个参数是是否使用事务, 第二个参数是应答模式, 这里是自动应答
//step5 创建一个目标(队列)
Queue queue = session.createQueue("queue-test");
```
使用完毕之后需要调用close关闭连接
```java
// 关闭连接
connection.close();
```
### 2.生产者
使用上面的步骤当中创建的会话, 使用生产者向消息中间件发送消息
```java
// 创建生产者
MessageProducer producer = session.createProducer(queue);
// 创建消息
TextMessage textMessage = session.createTextMessage("这是一条测试消息");
// 发送消息
producer.send(textMessage);
```
### 3.消费者
创建连接和创建会话的步骤都是一样的
```java
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination);
// 创建监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
System.out.println("接收消息:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB