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

Session.AUTO_ACKNOWLEDGE

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

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

 

分享到:
评论

相关推荐

    lwl-activemq.zip_activemq_collect6i1

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("MyQueue"); MessageProducer producer = session.createProducer(destination)...

    JMS.rar_activemq_jms_jms activemq

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建Destination(队列或主题) Destination destination = session.createQueue("myQueue"); // 或 session.createTopic(...

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

    Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); ``` 启用事务后,我们需要在代码的适当位置调用`session.commit()`来提交事务。如果不提交事务,消息将不会在MQ上实际发送...

    msmq.rar_java msmq_java 消息队列_java消息队列_msmq_消息队列

    QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue("myQueue"); QueueSender sender = session.createSender(queue); QueueReceiver ...

    Activemq入门实例.pdf

    - 接下来创建会话(Session),这里使用了Session.AUTO_ACKNOWLEDGE模式,表示会话自动确认消息接收。 - 创建目的地(Destination),在这里是一个队列,名为"FirstQueue"。 - 创建消息生产者(MessageProducer)...

    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的学习资源,其中包含对...

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

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

    ActiveMQ学习

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建目的地(队列) Destination destination = session.createQueue("test_queue"); // 创建消息生产者 MessageProducer...

    ActiveMQ_in_Action_中文

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

    ActiveMQ初步了解心得

    Session.AUTO_ACKNOWLEDGE是默认模式,消费者接收并处理完消息后自动确认;Session.CLIENT_ACKNOWLEDGE允许客户端手动确认消息;Session.DUPS_OK_ACKNOWLEDGE则允许消息延迟确认,可能会导致消息重复接收。 消息...

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

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

    [重要]基于Websphere MQ非持久化消息实现异步转同步

    Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建发送和接收队列 Queue requestQueue = session.createQueue("QUEUE_NAME"); Queue responseQueue = session.createTemporaryQueue...

    active mq 学习笔记

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("test_queue"); MessageProducer producer = session.createProducer...

    activeMQ 服务端客户端 java代码

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic("myTopic"); MessageProducer producer = session.createProducer(topic); TextMessage ...

    Jms 之 ActiveMQ学习资料

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

    activeMQ的java简单实例

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

    java JMS代码示例

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); ``` 5. **创建目的地** 目的地可以是队列(Queue)或主题(Topic)。队列遵循点对点通信模型,每个消息仅被一个消费者接收;...

    activeMQ推送服务端和客户端完整案例

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic("myTopic"); // 或 createQueue("myQueue") MessageProducer producer = session....

    java程序利用mq发送消息

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

Global site tag (gtag.js) - Google Analytics