本帖最后由 大山哥哥 于 2018-2-1 20:41 编辑
最近研究了一下JMS Java Messaging Service,总结了一点东西,希望对大家有点帮助.(注:所有代码附于文章末尾,服务器需要自己搭建-不会可以私聊我,提供已经搭建好虚拟机)
首先介绍一个概念,大家都听说过"高内聚,低耦合",那么什么是"高内聚,低耦合"?
通俗来说,高内聚是指模块内部关联关系要高;,低耦合是指模块与模块之间耦合程度尽量要低;当然"高内聚,低耦合"一般在分布式的系统中体现的比较明显.
为了便于大家理解在给大家说一下什么是分布式,分布式简单来说就是把一个应用拆分成多个不同的功能模块,部署在不同的服务器上,每个模块完成的功能各不相同,协同完成同一个工作流程.
下面我们正式介绍一下JMS相关内容(纯属个人理解,不足之处欢迎指正):
JMS概述:java消息服务,它是一系列的接口规范
JMS规范的5种数据类型: TextMessage MapMessage BytesMessage ObjectMessage StreamMessage
JMS消息机制:点对点 queue(默认持久化),发布/订阅 topic(默认不持久化)
JMS原理:通过监听器实现
JMS具体实现:ActiveMQ RabbitMQ ZeroMQ kafka...等
使用场景:当不需要返回值,并且服务的耗时比较长的时候
作用:发送短信,降低模块间的耦合度、提高模块的效率,时时更新或同步 例如:缓存同步,索引库同步,同步生成静态页面,抢购,秒杀...
JMS中角色:
消息服务平台(ActiveMQ RabbitMQ kafka都有自己的平台;ZeroMQ只是单纯的类库,没有平台,所以执行效率非常高)
消息生产者producer
消息消费者consumer
本处以ActiveMQ为例讲解使用步骤:
1.搭建消息服务平台
1.下载ActiveMQ服务器软件,上传到服务器并解压赋权(tar / chmod)
2.启动ActiveMQ,/ActiveMQ/bin/activemq start(查看启动的服务:ps -ef(aux)|grep activemq)
注意:需要把服务器主机名,添加到 /etc/hosts文件中,否则可能会报:503错误
2.创建消息提供者,连接消息服务平台,指定目的地
1.创建连接工厂 new ActiveMQConnectionFactory("tcp://activemq服务器ip地址:61616");
2.获取连接对象 connection
3.开启连接(注意:别忘了)
4.获取会话对象 session
5.创建目的地对象 queue/topic
6.创建消息对象可以使用session,也可以new
7.使用session创建producer
8.发送消息/接收消息
9.释放资源
3.创建消息消费者,连接消息服务平台,指定目的地
1.创建连接工厂 new ActiveMQConnectionFactory("tcp://activemq服务器ip地址:61616");
2.获取连接对象 connection
3.开启连接(注意:别忘了)
4.获取会话对象 session
5.创建目的地对象 queue/topic
6.使用session创建consumer
7.设置监听 consumer.setMessageListener(new MessageListener{})
8.设置主线程等待
9.释放资源
springJMS+ActiveMQ使用步骤:
1.搭建消息服务平台(具体步骤参照上面↑)
2.导入相关jar包 spring-jms.jar,activemq.jar
3.配置文件
applicationContext-jms.xml
消息生产者:
1.配置目标工厂 例如:ActiveMQConnectionFactory,RabbitMQConnectionFactory..
2.配置包装工厂 spring提供的SingleConnectionFactory(也可以使用SingleConnectionFactory的子类)
3.根据SingleConnectionFactory,创建jmsTemplate对象,jmsTemplate主要用于发送消息
4.配置目标对象queue/topic
消息消费者
1.配置目标connectionFactory 例如:ActiveMQConnectionFactory,RabbitMQConnectionFactory..
2.配置包装connectionFactory,spring提供的SingleConnectionFactory
3.配置目标对象queue/topic
4.配置监听(注意:要实现MessageListener接口),监听容器(需要:connectionFactory,destination,监听)
代码测试步骤:
假设服务器地址为192.168.25.135 ,打开浏览器输入地址 点击进入管理页面 输入用户名和密码 均为 admin
activemq服务器安装步骤:
1. 下载ActiveMQ 2. 配置jdk环境 3. 解压activeMQ安装包 4. 运行 使用bin目录下的activemq命令启动: [root@localhost bin]# ./activemq start 关闭: [root@localhost bin]# ./activemq stop 查看状态: [root@localhost bin]# ./activemq status 访问activeMQ 默认帐号密码 admin admin
|