Session.AUTO_ACKNOWLEDGE

使用自动确认模式,必须要创建无事务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();
                }
            }
        });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值