ActiveMQ开发简明教程
来源:互联网 发布:企查查如何导出数据 编辑:程序博客网 时间:2024/05/18 23:12
资源链接
- ActiveMQ入门实例
- activemq-5141-release下载
- 入门文档(英文,官方)
- 图解ActiveMQ
概念
ActiveMQ特性
ActiveMQ特性详细介绍
- ActiveMQ服务器工作模型
- ActiveMQ消息传送模型
- ActiveMQ消息选择器
- ActiveMQ消息签收
- ActiveMQ消息传送模式
- ActiveMQ优先级设置
- ActiveMQ消息过期设置
- ActiveMQ持久订阅设置
- ActiveMQ异步发送消息
- ActiveMQ消费者特性
- ActiveMQ消息预取机制
消息模型
ActiveMQ中有两种类型的消息模型
- 点对点(point-to-point,简称PTP)Queue消息传递模型
- 发布/订阅(publish/subscribe,简称pub/sub)Topic消息传递模型
更多介绍
消息类型
文本消息
TextMessage message = session.createTextMessage(msg);
Map消息
MapMessage message = session.createMapMessage();
序列化消息
Staff staff = new Staff(1, "搬砖工"); // Staff必须实现序列化ObjectMessage message = session.createObjectMessage(staff);
字节消息
String str = "BytesMessage 字节消息";BytesMessage message = session.createBytesMessage();message.writeBytes(str.getBytes());
流消息
String str = "StreamMessage 流消息";StreamMessage message = session.createStreamMessage();message.writeString(str);message.writeInt(521);
消息确认模式
客户端成功接收一条消息的标志是这条消息被签收。成功接收一条消息一般包括如
下三个阶段:
1. 客户端接收消息;
2. 客户端处理消息;
3. 消息被确认。确认可以由ActiveMQ 发起,也可以由客户端发起,取决于Session 确认模式的设置。
在带事务的 Session 中,确认自动发生在事务提交时。如果事务回滚,所有已经接收的消息将会被再次传送。
在不带事务的Session 中,一条消息何时和如何被确认取决于Session 的设置。
这是一种最快的消息确认模式,然则,花费者必须处理惩罚反复的消息处理惩罚题目。(例如:如何侦测和丢弃重发的消息的处理惩罚逻辑) Session.SESSION_TRANSACTED 当应用事务时,会话会隐含SESSION_TRANSACTED模式。事务提交的反响,然后相当于消息的确认。
当应用JMS事务来发送一组消息(多个消息),交易模式是很是有效的。但避免应用事务发送一个消息,因为这会带来额外的开销提交或回滚事务。 ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE 它不是一个标准的消息确认模式,很类似与CLIENT_ACKNOWLEDGE,只可惜它的消息确认是一种办法回调。在完成消息处理惩罚后不会去向理惩罚消息确认的。
事务
ActiveMQ支持两种事务
- JMS 事务。使用Session的commint()和rollback()即可实现。(类似于JDBC Connection对象)
- XA 事务。XASession,XAResource通过与消息中介(Message Broker)通信来实现。
事务原理
在支持事务的session中,producer发送message时在message中带有transactionID。broker收到message后判断是否有transactionID,如果有就把message保存在transaction store中,等待commit或者rollback消息。所以ActiveMQ的事务是针对broker而不是producer,不管session是否commit,broker都会收到message。
如果producer发送模式选择了persistent,那么message过期后会进入死亡队列。在message进入死亡队列之前,ActiveMQ会删除message中的transaction ID,这样过期的message就不在事务中了,不会保存在transaction store中,会直接进入死亡队列。
开发
spring配置
- ActiveMQ spring配置
支持的协议与案例
Send to Topic
Receive from Queue
Receive from Topic JMS(Apache Camel) OpenWire Send to Queue
Send to Topic
Receive from Queue
Receive from Topic REST(JAX-RS) REST Send to Queue
Send to Topic
Receive from Queue
Receive from Topic WebSocket STOMP Send to Queue
Send to Topic
Receive from Queue
Receive from Topic
优秀案例
- 基于ActiveMQ的消息中间件系统 OneMM逻辑与物理架构设计详解
配置
持久化
- ActiveMQ 三种持久化配置
其他
- ActiveMQ桥接
小插曲
- 默认的用户名和密码
- Maven配置
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.14.1</version></dependency>
0 0
- ActiveMQ开发简明教程
- webgame开发简明教程
- webgame开发简明教程
- javascript开发简明教程
- InstallShield简明教程之集成开发环境
- webgame开发简明教程(经典)
- Android简明开发教程一:概述
- Android简明开发教程五:Activities
- Android简明开发教程六:用户界面设计
- Android OpenGL ES 简明开发教程
- Chrome扩展程序开发调试简明教程
- Android OpenGL ES 简明开发教程
- Android OpenGL ES 简明开发教程
- Android简明开发教程五:Activities
- Android简明开发教程六:用户界面设计
- Android OpenGL ES 简明开发教程小结
- Android OpenGL ES 简明开发教程 01
- Android中的WiFi开发简明教程
- tomcat多域名配置方法
- Android M新权限开发
- 如何更新及替换ViewPager中的Fragment
- C++中两个类相互包含引用问题
- uiautomator在使用scrollable遇到页面有两个可滑动控件的解决方法
- ActiveMQ开发简明教程
- QTP基本使用——WORD
- nodejs中npm 安装无法进行及切换淘宝源的方法
- RCC外设的学习和理解
- 将mongodb中的数据导入mysqld
- javascript学习之函数(7)—— 函数 声明定义
- git从本地仓库上传到github
- Android环境篇二(Eclipse+ADT环境)
- 怎么删除一个没有头指针的单链表的一个节点?