java连接activeMQ
This commit is contained in:
parent
55fa25484c
commit
f59c9ab924
@ -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`当中
|
||||

|
||||
|
||||
76
source/_posts/Java/消息中间件(2)-java连接ActiveMQ.md
Normal file
76
source/_posts/Java/消息中间件(2)-java连接ActiveMQ.md
Normal 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();
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
BIN
source/images/Java/消息队列/transport.png
Normal file
BIN
source/images/Java/消息队列/transport.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
Loading…
x
Reference in New Issue
Block a user