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(); } } }); }
相关推荐
11. **事务管理**:JMS1.1支持X/Open XA事务,允许将消息发送与数据库操作合并到一个全局事务中,确保数据一致性。 12. **选择器(Selector)**:在发布/订阅模型中,消费者可以通过选择器过滤收到的消息,只接收...
7. **会话(Session)**:在JMS中,`Session`对象是线程安全的,用于创建消息生产者、消费者以及管理事务。会话可以配置为事务性的,这意味着消息的发送和接收可以作为单个事务处理。 8. **持久化**:JMS允许消息的...
8. **事务(Transactions)**:JMS允许在消息发送和接收操作中使用事务,确保消息传递的原子性。 9. **API**:JMS提供了一套丰富的API,包括`javax.jms`包下的各种接口和类,如`ConnectionFactory`、`Session`、`...
- **JMS的需求:** JMS定义了一系列的需求来满足企业级应用中的消息传递需求,包括消息的安全性、持久性和事务支持等方面。 - **与其他Java API的关系:** - **JDBC(Java Database Connectivity):** JMS可以与...
4. 连接池和资源管理:CachingConnectionFactory是如何缓存JMS资源,如Connection、Session和Producer/Consumer,以提高性能。同时,了解其如何处理连接的生命周期和异常恢复。 5. 配置和定制:Spring JMS提供了一...
在实际开发中,了解如何在Java应用程序中集成JMS,如创建ConnectionFactory、Session、Producer和Consumer,以及如何发送和接收消息,是非常重要的。此外,学习如何在各种异常情况下保证消息的正确处理,如消息丢失...
- **Session事务**:在一个Session中进行的一组操作,要么全部成功,要么全部失败。 - **X/Open XA事务**:支持跨多个资源的分布式事务。 6. **持久性**: - 消息可以被持久化存储,即使消息代理重启,也不会...
在进行事务处理时,需要在会话创建时指定是否支持事务,并确保所有操作都在同一个事务上下文中执行。 示例代码: ```java Session session = connection.createQueueSession(true, Session.SESSION_TRANSACTED); ...
`Session`有事务支持,可以配置为非事务、单事务或自动提交事务。 5. **目的地**:`Destination`接口是`Queue`和`Topic`的父接口,代表消息的目的地。`Queue`代表点对点通信的目标,而`Topic`代表发布/订阅模型中的...
Session还负责管理事务,可以配置为自动提交或手动提交。 5. **ConnectionFactory**:连接工厂接口用于创建到JMS提供者的连接。每个JMS供应商都会提供一个实现此接口的具体类。 6. **Connection**:连接接口代表与...
3. 分别创建Session,用于处理消息的发送和接收,可以设置是否为事务性。 4. 创建Destination,代表队列或主题。 5. 创建MessageProducer和MessageConsumer,分别用于发送和接收消息。 6. 发送和接收消息,然后关闭...
- JMS支持两种类型的事务:本地事务(Session的begin/commit/rollback)和X/Open DTC事务,确保消息传递的可靠性。 9. **持久订阅(Durable Subscription)** - 在主题上,消费者可以创建持久订阅,即使消费者...
2. **事务管理**:JMS支持本地事务和全局事务,允许开发者根据业务需求选择合适的事物管理策略,确保消息的可靠性和一致性。 3. **持久化**:JMS提供了持久化选项,即使在消息服务器重启后,未确认的消息仍然可以被...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它为应用程序提供了一种标准的方式,用来创建、发送、接收和读取消息。JMS允许应用程序在分布式的、甚至是部分不...
**事务支持**:JMS支持在消息传递过程中使用事务,以确保消息的一致性和完整性。通过设置会话的事务级别,可以在消息生产和消费的过程中保证原子性操作。 **可靠性保障**:JMS提供多种级别的可靠性保障,允许开发者...
- **事务处理**:JMS支持本地事务和全局事务,确保消息处理的原子性和一致性。 - **持久化**:消息可以被持久化存储,以防止系统崩溃时消息丢失。 #### 七、结语 JMS作为Sun Microsystems推出的官方消息中间件标准...
五、JMS事务与持久性 1. 事务(Transaction):JMS支持事务,确保消息的原子性和一致性。 2. 持久化:消息代理可将消息存储在磁盘上,即使服务器重启也不会丢失。 六、JMS的应用场景 1. 异步处理:将耗时操作从主线...
在实际应用中,通常会使用`ConnectionFactory`来创建连接,然后创建`Session`对象,该对象用于管理事务和创建消息生产者和消费者。 在"JMS.txt"文件中,可能包含了一个简单的Java代码示例,展示了如何设置这些对象...