ActiveMQ中遇到的问题

来源:互联网 发布:lk在linux的哪一层 编辑:程序博客网 时间:2024/05/17 22:22

当发送消息的类型为Object时;

生产者和消费者中的Object对象的全限定类名和系列号必须相同;否则不认为是同一个Object对象


1.ActiveMQ事务消息和非事务消息

1.事务消息:创建会话session使用transaction=true

事务消息必须在发送和接收完消息后显式的调用session.commit();

2.非事务消息:创建会话session使用transaction=false

2.ActiveMQ消息确认机制

消息只有在确认之后,才认为已经被成功消费,然后消息才会从队列或主题中删除

消息的成功消费通常包括三个阶段

客户接收消息

客户处理消息

消息被确认

四种消息确认方法:

1.AUTO_ACKNOWLEDGE

客户成功从receive方法返回时,会话自动确认消息

2.CLIENT_ACKNOWLEDGE

客户通过显式调用消息的acknowledge方法确认消息

3.DUPS_OK_ACKNOWLEDGE

不是必须确认,是一种懒散的消息确认,消息可能会重复发送,在第二次重新传送消息时,消息头的JMSRedelivered会被置为true标识当前消息已经传送过一次,客户端需要进行消息的重复处理控制。

4.SESSION_TRANSACTED

事务提交并确认。

3.ActiveMQ消息持久化与非持久化

//设置发送的消息是否需要持久化
messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//不持久化
messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);//持久化的,当然activemq发送消息默认都是持久化的

4.