JMS中的事务Session

   Session   session = conn.createQueueSession(true, Session.AUTO_ACKNOWLEDGE); 
   第一个参数代表该session是否支持事务,true 表示这个会话是事务性的,需要显式的commit 或者rollback ().
    如果没有显示的提交session.commit(),接收端是不能够收到发送方的消息的。

  

public static void main(String[] args)
        throws Exception
    {
        // 设置用户名和密码,这个用户名和密码在conf目录下的credentials.properties文件中,也可以在activemq.xml中配置
        String url = "tcp://localhost:61616";
        String userName = "system";
        String password = "manager";
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName,password,url);
        
        // 2.创建连接接口
        Connection connection = connectionFactory.createConnection();
        Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
        
        // 创建目标,就创建主题也可以创建队列
        Destination destination = session.createQueue("test_queue");
        // 创建消息生产者
        MessageProducer producer = session.createProducer(destination);
       
        producer.send(session.createTextMessage("you can get me!"));
        session.commit();
        producer.send(session.createTextMessage("you can get me too!"));
        session.commit();
        //没有提交会话,接收端不能接到消息
        producer.send(session.createTextMessage("you can't get me !"));
        
        // 关闭资源
        session.close();
        connection.close();
    }
 public static void main(String[] args)
        throws JMSException
    {
        String url = "tcp://localhost:61616";
        String userName = "system";
        String password = "manager";
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName,password,url);
        Connection connection = connectionFactory.createConnection();
        
        //一定要start
        connection.start();
        
        // 通过连接接口创建一个会话接口   
        Session session = connection.createSession(false, Session.AUTO_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());
                }
                catch (JMSException e)
                {
                    e.printStackTrace();
                }
                
            }
        });
        
    }

猜你喜欢

转载自aty.iteye.com/blog/1886250
jms
今日推荐