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

JMS中的事务Session

    博客分类:
  • JMS
阅读更多

   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();
                }
                
            }
        });
        
    }

 

分享到:
评论

相关推荐

    JMS1.1规范(中文)

    11. **事务管理**:JMS1.1支持X/Open XA事务,允许将消息发送与数据库操作合并到一个全局事务中,确保数据一致性。 12. **选择器(Selector)**:在发布/订阅模型中,消费者可以通过选择器过滤收到的消息,只接收...

    jms-1.1.jar(jms工具jar包)

    7. **会话(Session)**:在JMS中,`Session`对象是线程安全的,用于创建消息生产者、消费者以及管理事务。会话可以配置为事务性的,这意味着消息的发送和接收可以作为单个事务处理。 8. **持久化**:JMS允许消息的...

    JMS中/英文帮助文档

    8. **事务(Transactions)**:JMS允许在消息发送和接收操作中使用事务,确保消息传递的原子性。 9. **API**:JMS提供了一套丰富的API,包括`javax.jms`包下的各种接口和类,如`ConnectionFactory`、`Session`、`...

    JMS 中文 规范

    - **JMS的需求:** JMS定义了一系列的需求来满足企业级应用中的消息传递需求,包括消息的安全性、持久性和事务支持等方面。 - **与其他Java API的关系:** - **JDBC(Java Database Connectivity):** JMS可以与...

    spring-jms源码

    4. 连接池和资源管理:CachingConnectionFactory是如何缓存JMS资源,如Connection、Session和Producer/Consumer,以提高性能。同时,了解其如何处理连接的生命周期和异常恢复。 5. 配置和定制:Spring JMS提供了一...

    JMS学习笔记精心总结

    在实际开发中,了解如何在Java应用程序中集成JMS,如创建ConnectionFactory、Session、Producer和Consumer,以及如何发送和接收消息,是非常重要的。此外,学习如何在各种异常情况下保证消息的正确处理,如消息丢失...

    JMS入门文档,JMS入门文档

    - **Session事务**:在一个Session中进行的一组操作,要么全部成功,要么全部失败。 - **X/Open XA事务**:支持跨多个资源的分布式事务。 6. **持久性**: - 消息可以被持久化存储,即使消息代理重启,也不会...

    Programming WebLogic JMS

    在进行事务处理时,需要在会话创建时指定是否支持事务,并确保所有操作都在同一个事务上下文中执行。 示例代码: ```java Session session = connection.createQueueSession(true, Session.SESSION_TRANSACTED); ...

    javax.jms包,sun的JMS接口规范包

    `Session`有事务支持,可以配置为非事务、单事务或自动提交事务。 5. **目的地**:`Destination`接口是`Queue`和`Topic`的父接口,代表消息的目的地。`Queue`代表点对点通信的目标,而`Topic`代表发布/订阅模型中的...

    ActiveMQ 中javax.jms的源码 javax.jms-sources-1.1.zip

    Session还负责管理事务,可以配置为自动提交或手动提交。 5. **ConnectionFactory**:连接工厂接口用于创建到JMS提供者的连接。每个JMS供应商都会提供一个实现此接口的具体类。 6. **Connection**:连接接口代表与...

    ActiveMQ在JMS中的运用-深入浅出JMS

    3. 分别创建Session,用于处理消息的发送和接收,可以设置是否为事务性。 4. 创建Destination,代表队列或主题。 5. 创建MessageProducer和MessageConsumer,分别用于发送和接收消息。 6. 发送和接收消息,然后关闭...

    JMS 开发简明教程

    - JMS支持两种类型的事务:本地事务(Session的begin/commit/rollback)和X/Open DTC事务,确保消息传递的可靠性。 9. **持久订阅(Durable Subscription)** - 在主题上,消费者可以创建持久订阅,即使消费者...

    JMS 规范(英文)

    2. **事务管理**:JMS支持本地事务和全局事务,允许开发者根据业务需求选择合适的事物管理策略,确保消息的可靠性和一致性。 3. **持久化**:JMS提供了持久化选项,即使在消息服务器重启后,未确认的消息仍然可以被...

    JMS学习笔记(一)——JMS简介安装ActiveMQ

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它为应用程序提供了一种标准的方式,用来创建、发送、接收和读取消息。JMS允许应用程序在分布式的、甚至是部分不...

    JMS 教程 - 消息队列、消息服务

    **事务支持**:JMS支持在消息传递过程中使用事务,以确保消息的一致性和完整性。通过设置会话的事务级别,可以在消息生产和消费的过程中保证原子性操作。 **可靠性保障**:JMS提供多种级别的可靠性保障,允许开发者...

    Sun 官方JMS教程

    - **事务处理**:JMS支持本地事务和全局事务,确保消息处理的原子性和一致性。 - **持久化**:消息可以被持久化存储,以防止系统崩溃时消息丢失。 #### 七、结语 JMS作为Sun Microsystems推出的官方消息中间件标准...

    JMS教程

    五、JMS事务与持久性 1. 事务(Transaction):JMS支持事务,确保消息的原子性和一致性。 2. 持久化:消息代理可将消息存储在磁盘上,即使服务器重启也不会丢失。 六、JMS的应用场景 1. 异步处理:将耗时操作从主线...

    JMS.rar_activemq_jms_jms activemq

    在实际应用中,通常会使用`ConnectionFactory`来创建连接,然后创建`Session`对象,该对象用于管理事务和创建消息生产者和消费者。 在"JMS.txt"文件中,可能包含了一个简单的Java代码示例,展示了如何设置这些对象...

Global site tag (gtag.js) - Google Analytics