欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Session.AUTO_ACKNOWLEDGE

程序员文章站 2022-05-03 23:50:33
...

使用自动确认模式,必须要创建无事务session

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

 

  AUTO_ACKNOWLEDGE:自动确认模式,一旦接收方应用程序的消息处理回调函数返回,会话对象就会确认消息的接收。 一般接收方的做法是调用consumer.setMessageListener()注册消息处理函数。如果该函数返回,代表着一条消息被接受放成功接收, ActiveMQ服务器会认为消息接收成功。函数的返回可以是正常的返回,也可以是因为抛出异常而结束。

 

接收方代码,多次允许的时候,每次都会接收到1个消息。这是因为消息处理函数没有返回,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
                {
                     System.out.println("收到消息:" + message.getText());
                     while(true)
		     {
			//throw new JmsException("error return");
                     }
                }
                catch (JMSException e)
                {
                    e.printStackTrace();
                }
            }
        });

 

相关标签: jms