Part1:开发的基本步骤
1:建立ActiveMQ的ConnectionFactory工厂对象.
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(“username”,“password”,“url”);
2:用connectionFactory创建Connection连接并开启连接,Connection默认是关闭.
Connection connection = connectionFactory.createConnection();
connection.start();
3:用connection创建Session会话,参数1为是否启用是事务,参数2为签收模式.
session=connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
事务介绍:指的是生产者producer到broker或broker到consumer过程中同一个session中发生的,保证几条消息在发送过程中的原子性,在支持事务的session中,producer发送message时在message中带有transactionID。broker收到message后判断是否有transactionID,如果有就把message保存在transaction store中,等待commit或者rollback消息。所以推荐设置带事务的session,这样可以减少消息在传递中丢失的风险(发送端/生产端)。
签收模式/确认机制(ack_mod)介绍:ACK_MODE描述了Consumer与broker确认消息的方式(时机),比如当消息被Consumer接收之后,Consumer将在何时确认消息。所以ack_mode描述的不是producer于broker之间的关系,而是customer于broker之间的关系。对于broker而言,只有接收到ACK指令,才会认为消息被正确的接收或者处理成功了,通过ACK,可以在consumer与Broker之间建立一种简单的“担保”机制.
session =connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
第一个参数:是否支持事务,如果为true,则会忽略第二个参数,自动被jms服务器设置为 SESSION_TRANSACTED。
四种确认选项:
AUTO_ACKNOWLEDGE=1自动确认、CLIENT_ACKNOWLEDGE=2客户端手动确认; DUPS_OK_ACKNOWLEDGE=3自动批量确认、SESSION_TRANSACTED=0事务提交并确认。推荐设置带事务的session,可以减少消息在传递中丢失的风险(接收端/消费端)4:用Session创建Destination对象.
在P2P模式中,Destination被称作Queue即队列;在Pub/Sub模式,Destination被称作Topic即主题。在程序中可以使用多个Queue和Topic。
Destination destination =session.createQueue(“myQueue”);
5:用Session创建生产者或消费者.
MessageProducer producer = session.createProducer(destination);
可以使用MessageProducer的setDeliveryMode方法为其设置持久化和非持久化.为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息列,消息系统一般都会采用持久化机制。ActiveMQ的持久化机制有JDBC,KahaDB,LeverDB和AMQ.producer.setDeliveryMode(DeliveryMode.PERSISTENT);
所以推荐DeliveryMode设置持久化,这样可以减少消息在传递中丢失的风险(MQ自己丢失消息)。
6:创建数据并发送数据.
TextMessage msg = session.createTextMessage(“我是文本消息内容” );
其中还有MapMessage(键值对)、ObjectMessage(序列化的Java对象)、StreamMessage(数据流)、BytesMessage共五种消息内容.
producer.send(destination,msg,DeliveryMode.NON_PERSISTENT,0, 1000L);
其中第一个参数目标地址, 第二个参数具体的数据信息,第三个参数传送数据的模式, 第四个参数优先级,第五个参数消息的过期时间:7:安全机制问题(如果项目需要).
在实际项目中需要定制配置:包括管理控制台登录的 安全配置和消息推送与接收的安全配置两部分。
8:关闭资源(connection、session、producer、consumer).Part2:ActiveMQ系列
- ActiveMQ系列:高级特性之异步投递、延时投递与定时投递
- ActiveMQ系列: ActiveMQ 的死信队列与消费重试机制
- 安全机制分为两个部分:管理控制台登录和消息推送与接收
- activemq之安全配置;
- 消息中间件-activemq安全机制
- 集群(又叫HA高可用)
- ActiveMQ系列:基于LevelDB和Zookeeper的数据复制集群
- ActiveMQ的集群与高可用
- activemq-集群和主从模式学习笔记
- ActiveMQ中的NetworkConnector(网络连接器)详解集群(Replicated LevelDB Store):
Part3:面试题
- ActiveMQ消息发送策略【同步发送 && 异步发送】
- ActiveMQ的消息重发机制
- ActiveMQ面试专题
- 消息中间件面试题