`
aty
  • 浏览: 36526 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Session.CLIENT_ACKNOWLEDGE

    博客分类:
  • JMS
jms 
阅读更多

    使用客户端确认模式,必须要创建无事务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();
                }
            }
        });
 
分享到:
评论

相关推荐

    ActiveMQ事务与三种签收方式.docx

    2. **Session.CLIENT_ACKNOWLEDGE**:在这个模式下,客户端需要显式调用`Message.acknowledge()`方法来签收消息。这意味着签收操作发生在消息消费之后,提供了更高的控制,但需要额外的处理来确保消息被确认。例如:...

    Activemq入门实例.pdf

    - 另外还有Session.CLIENT_ACKNOWLEDGE和DUPS_OK_ACKNOWLEDGE两种模式,其中CLIENT_ACKNOWLEDGE模式需要调用消息的acknowledge()方法来手动确认消息,DUPS_OK_ACKNOWLEDGE则允许消息的确认有一定的延迟,可能会收到...

    ActiveMQ in Action 中文

    消息的确认机制有三种模式:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE和Session.DUPS_ACKNOWLEDGE,分别对应自动确认、客户端确认和迟钝确认,这些模式决定了消息何时被确认。 JMS支持消息持久性,...

    ActiveMQ详细教程

    在非事务性会话中,消息的确认取决于会话的应答模式,其中包括Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE和Session.DUPS_ACKNOWLEDGE三种模式。 ActiveMQinAction是ActiveMQ的学习资源,其中包含对...

    ActiveMQ_in_Action_中文

    非事务性会话中,消息何时被确认取决于创建会话时的应答模式,有Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE和Session.DUPS_ACKNOWLEDGE三种可选值。 JMS支持两种消息提交模式:PERSISTENT和NON_...

    ActiveMQ初步了解心得

    Session.CLIENT_ACKNOWLEDGE允许客户端手动确认消息;Session.DUPS_OK_ACKNOWLEDGE则允许消息延迟确认,可能会导致消息重复接收。 消息持久化是保证消息不丢失的重要机制。默认情况下,ActiveMQ会将消息持久化到...

    Jms 之 ActiveMQ学习资料

    非事务性会话中,确认模式有Session.AUTO_ACKNOWLEDGE(自动确认)、Session.CLIENT_ACKNOWLEDGE(手动确认)和Session.DUPS_ACKNOWLEDGE(延迟确认,可能导致消息重复)。 2. **持久性(Durability)**:JMS支持...

    ActiveMQ(中文)参考手册.pdf

    应答模式有三种:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE和Session.DUPS_ACKNOWLEDGE。 消息持久性分为持久提交(PERSISTENT)和非持久提交(NON_PERSISTENT)。持久提交可以确保消息在JMS提供者...

    ActiveMQ基本使用与优化

    Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); // 创建队列目标 Queue queue = session.createQueue("MyQueue"); // 创建生产者 MessageProducer producer = session....

    ActiveMQ in Action

    - **手动确认(Session.CLIENT_ACKNOWLEDGE)**:客户端需要通过调用消息的`acknowledge()`方法来手动确认消息。这种方式下,确认消息将同时确认同一会话中所有已消费的消息。 - **延迟确认(Session.DUPS_ACKNOWLEDGE)...

    Java 如何使用AMQP协议订阅启用Partition 的Azure ServiceBus Topic1

    TopicSession session = (TopicSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic("test"); ``` 解决订阅启用Partition 的 Topic 错误 如果您尝试使用 ...

    activeMq 实战

    - `Session.CLIENT_ACKNOWLEDGE`:客户端通过消息的 `acknowledge()` 方法手动确认消息。需要注意的是,在这种模式下,确认发生在会话层面:确认一个被消费的消息会自动确认所有已被会话消费的消息。 - `Session....

    ActiveMQ消息签收机制代码实例详解

    Session.CLIENT_ACKNOWLEDGE:需要消费者客户端主动调用acknowledge方法签收消息,这种模式实在Session层面进行签收的,签收一个已经消费的消息会自动的签收这个Session已消费的所有消息。 Session.DUPS_OK_...

    藏经阁-阿里云物联网平台(四).pdf

    如果选择`Session.CLIENT_ACKNOWLEDGE`模式,需要手动确认消息接收,避免长时间处理消息导致堆积。 规则引擎是阿里云物联网平台中数据处理的核心组件,它允许用户基于SQL查询语言对设备上报的数据进行实时分析和...

    4.3、多线程consumer 访问集群 static快(两个broker)1

    消息生产者使用Session.CLIENT_ACKNOWLEDGE模式,这意味着消息只有在客户端确认后才会被删除,增加了消息的可靠性。 接收者(QueueReceiverThread1)则创建了10个线程来监听同一队列,每个线程都使用MyThread类来...

    java客户端从MQ队列接收消息的三种方法

    QueueSession session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue("queueName"); QueueReceiver receiver = session.createReceiver(queue); Message msg...

    activemq工具类

    factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE); // 设置为手动确认 return factory; } } ``` 在手动确认模式下,你需要在`receiveMessage`方法中显式调用`sessionAcknowledged()`或`message....

    java程序利用mq发送消息

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); ``` 接下来,我们将创建目标队列,即消息的接收方,这里假设队列为“QUEUE.B”: ```java Queue queue = session.createQueue(...

    java调用ibmmq最全版本jar包,包含connector

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列 MQQueue queue = (MQQueue) session.createQueue("QUEUE_NAME"); // 创建MessageProducer和Message ...

Global site tag (gtag.js) - Google Analytics