activeMQ-08签收机制

activeMQ的签收机制,主要作用于消费者。
1)默认为自动签收;Session.AUTO_ACKNOWLEDGE;
2)手动签收;Session.CLIENT_ACKNOWLEDGE;
具体使用如下:

//创建连接session;第一个参数为事务,第二个参数为签发机制。此处为手动签收机制;
                session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
                //创建消息目的地队列(队列名称)
                Queue queue = session.createQueue(queueName);
                //创建消费者
                messageConsumer = session.createConsumer(queue);
                while(true) {
                    // messageConsumer.receive();此方法会一直等待消息,不会中止进程
                    // messageConsumer.receive(4000L);等待4s后,若无消息,则中止进程,不再等待
                    Message message = messageConsumer.receive();
                    if(message!=null) {
                        TextMessage textMessage = (TextMessage) message;
                        System.out.println("消费的消息是"+textMessage);
                        //需要手动写入以设置签收,不然消息则视为未消费;
                        textMessage.acknowledge();
                    }else {
                        break;
                    }
                }

注意事项:
1)开启事务和非事务,消费者签收机制需要注意,开启事务后,session.commit();后,即使不调用textMessage.acknowledge();消息也会被签收,没有commit,即使手动签收textMessage.acknowledge();也没有作用;
2)总之,MQ的事务session作用大于消息的签收;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是MQ? MQ,中文名字叫做消息中间件。既然是中间件,那么就说明它左边有东西,右边也有东西。那么左边是什么...
    贪挽懒月阅读 795评论 3 5
  • 消息中间件 消息中间件有很多的用途和优点: 1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传...
    错位的季节阅读 822评论 0 1
  • 1.简介 1.1. ActiveMQ 由Apache出品的开源消息总线。是一个完全支持JMS1.1和J2EE ...
    华木公子阅读 2,403评论 0 0
  • ActiveMQ 即时通讯服务 浅析http://www.cnblogs.com/hoojo/p/active_m...
    bboymonk阅读 1,515评论 0 11
  • 鸟音婉转,有如天籁,不觉驻足。 阳光透过浓密的枝桠漏下点点光斑于湖面,鸟声便是从此处流出。一女子在湖边石阶上浣衣。...
    M四月M阅读 222评论 0 1