美文网首页
activeMQ-08签收机制

activeMQ-08签收机制

作者: 誓俭草 | 来源:发表于2020-02-01 20:37 被阅读0次

    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作用大于消息的签收;

    相关文章

      网友评论

          本文标题:activeMQ-08签收机制

          本文链接:https://www.haomeiwen.com/subject/yigxxhtx.html