A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 大山哥哥 于 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 ,打开浏览器输入地址
http://192.168.25.135:8161/即可进入ActiveMQ管理页面
点击进入管理页面
输入用户名和密码  均为 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

代码百度云盘下载地址链接:https://pan.baidu.com/s/1dHhdKul 密码:vr4p
activemq服务器文件百度云盘下载地址链接https://pan.baidu.com/s/1o9i7eJ4 密码:7opz

2 个回复

倒序浏览
我来占层楼啊   
回复 使用道具 举报
赞一个,刚学完,只能看着笔记配…
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马