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 官方docker activemq入门教程_Java

  • ActiveMQ系列:高级特性之异步投递、延时投递与定时投递
  • ActiveMQ系列: ActiveMQ 的死信队列与消费重试机制
  • 安全机制分为两个部分:管理控制台登录和消息推送与接收
  • activemq之安全配置;
  • 消息中间件-activemq安全机制
  • 集群(又叫HA高可用)
  • ActiveMQ系列:基于LevelDB和Zookeeper的数据复制集群
  • ActiveMQ的集群与高可用
  • activemq-集群和主从模式学习笔记
  • ActiveMQ中的NetworkConnector(网络连接器)详解集群(Replicated LevelDB Store):

Part3:面试题

  • ActiveMQ消息发送策略【同步发送 && 异步发送】
  • ActiveMQ的消息重发机制
  • ActiveMQ面试专题
  • 消息中间件面试题