• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. 引入依赖
  2. 2. 1.连接ActiveMQ
  3. 3. 2.生产者
  4. 4. 3.消费者

消息中间件(2)-java连接ActiveMQ

2018-11-02 15:59:34
总字数 478
预计阅读时间 2 分钟

使用java连接activeMQ

引入依赖

1
2
3
4
5
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.7</version>
</dependency>

1.连接ActiveMQ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//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");
// 主题模式
// Topic topic = session.createTopic("topic-test");

使用完毕之后需要调用close关闭连接

1
2
// 关闭连接
connection.close();

2.生产者

使用上面的步骤当中创建的会话, 使用生产者向消息中间件发送消息

1
2
3
4
5
6
7
8
// 创建生产者
MessageProducer producer = session.createProducer(queue);

// 创建消息
TextMessage textMessage = session.createTextMessage("这是一条测试消息");

// 发送消息
producer.send(textMessage);

3.消费者

创建连接和创建会话的步骤都是一样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 创建消费者
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();
}
}
});

注意:

  1. 由于监听操作是一个异步操作
    创建并设置监听器之后, 不能立即关闭连接, 否则就无法接收到消息
  2. 这里如果写成lamdba表达式的形式会无法接收到消息, 暂时不明白为什么

在队列模式下, 如果有多个消费者, 每个消息只会被其中一个消费者接收
在主题模式下, 如果有多个消费者, 推送消息之后, 推送的消息会被在此之前建立监听的所有消费者接收
(基本类似于redis里面的发布订阅)

  • JMS
  • Java

扫一扫,分享到微信

持续集成-jenkins
消息中间件(1)-初见 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆