MQ提供REST API
1.生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS 规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。
2.订阅者一和订阅者二都能收到一样的消息,也就是说在发布订阅模式下,一份消息可以被多个消费者消费
消息相关概念
消息类型
JMS 消息由以下三部分组成:
消息头。每个消息头字段都有相应的getter 和setter 方法。
消息属性。如果需要除消息头字段以外的值,那么可以使用消息属性。
消息体。消息主题内容,JMS定义消息包括TextMessage、MapMessage、BytesMessage、StreamMessage、ObjectMessage类型
消息确认
JMS 消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通
常包含三个阶段:客户接收消息、客户处理消息和消息被确认。
在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会
话中,消息何时被确认取决于创建会话时的应答模式(acknowledgementmode)。
该参数有以下三个可选值:
Session.AUTO_ACKNOWLEDGE。当客户成功的从receive方法返回的时候,
或者从MessageListener.onMessage 方法成功返回的时候,会话自动确认
客户收到的消息。
Session.CLIENT_ACKNOWLEDGE。客户通过消息的acknowledge 方法确认消
息。需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被
消费的消息将自动确认所有已被会话消费的消息。例如,如果一个消息消
费者消费了10 个消息,然后确认第5 个消息,那么所有10 个消息都被确
认。
Session.DUPS_ACKNOWLEDGE。该选择只是会话迟钝的确认消息的提交。如
果JMS provider 失败,那么可能会导致一些重复的消息。如果是重复的
消息,那么JMS provider 必须把消息头的JMSRedelivered 字段设置为
true。
消息持久化
AMQ Message Store
AMQ Message Store 是ActiveMQ5.0缺省的持久化存储。Message commands 被
保存到transactional journal(由rolling data logs 组成)。Messages 被保
存到data logs 中,同时被reference store 进行索引以提高存取速度。Date logs
由一些单独的data log 文件组成,缺省的文件大小是32M,如果某个消息的大
小超过了data log 文件的大小,那么可以修改配置以增加data log 文件的大小。
- 去官网下载linux的RectiveMq。
http://activemq.apache.org/activemq-5140-release.html - 把下载好的文件放在linux的opt目录下(opt目录是专门存放第三方软件的目录)
- 解压
tar -zxvf apache-activemq-5.14.0-bin.tar.gz - 建立文件夹 activemq
mkdir activemq - 移动解压好的文件并重命名
mv xxxx activemq - 普通启动
https://blog.51cto.com/u_16099248/activemq start - 关闭
https://blog.51cto.com/u_16099248/activemq stop - 重启
https://blog.51cto.com/u_16099248/activemq restart - 查看端口
ps -ef|grep activemq |grep -v grep
netstat -anp|grep 61616 - 测试访问
win:192.168.x.xx
linux:192.168.xxx.x
通过 ping ip 测试网络通
保证 linux服务器 防火墙关闭
本地电脑也要关闭防火墙 - 创建maven项目引入maven
- 创建生产者
- 通过activeMq8161端口来看你写的消息
14.创建消费者
执行完毕后,在管理界面,可以看到自己的信息个数,被消费了,消费者数量。
注意
- 如果需要把消息存储mysql,需要把mysql驱动包放在activemq的lib下
- 我在安装的过程中,遇见的关闭linux服务器防火墙,关闭方法按照百度的方法为 service iptables stop,最后原来因为是,centos7之后的关闭防火墙方法为
关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
- Queue(点到点)模式
在点对点的传输方式中,消息数据被持久化,每条消息都能被消费,没有监听QUEUE地址也能被消费,数据不会丢失,一对一的发布接受策略,保证数据完整 - 主题模式
一对多的传输方式
<< 上一篇
下一篇 >>