Session.CLIENT_ACKNOWLEDGE

    使用客户端确认模式,必须要创建无事务session

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);  

   
    CLIENT_ACKNOWLEDGE:客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用,会话会确认该消息的接收,ActiveMQ服务器会认为消息成功接收。
以下是客户端的测试代码,每次执行一次,都会收到一个消息。因为没有调用消息的确认方法,ActiveMQ会认为消息没有成功接收。
String url = "tcp://localhost:61616";
        String userName = "system";
        String password = "manager";
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, url);
        Connection connection = connectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
        Destination destination = session.createQueue("test_queue");
        MessageConsumer consumer = session.createConsumer(destination);

        // 消息消费者接收消息
        consumer.setMessageListener(new MessageListener()
        {
            @Override
            public void onMessage(Message msg)
            {
                TextMessage message = (TextMessage) msg;
                try
                {
                    //确认消息已经成功接收
                    //msg.acknowledge();
                    System.out.println("收到消息:" + message.getText());
                }
                catch (JMSException e)
                {
                    e.printStackTrace();
                }
            }
        });
 

你可能感兴趣的:(JMS)