异步队列消息的接收有一点区别,但发送的代码不用改变:
1 @Stateless
2 public class JMSReceiveBean implements JMSReceiveRemote {
3
4 @Resource(name = "jms/Queue")
5 private Queue queue;
6 @Resource(name = "jms/ConnectionFactory")
7 private ConnectionFactory queueFactory;
8
9 private void receiveJMSMessageFromQueue() throws Exception {
10 Connection connection = null;
11 Session session = null;
12 connection = queueFactory.createConnection();
13 session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
14 MessageConsumer consumer = session.createConsumer(queue);
15 consumer.setMessageListener(new MessageListener() {
16
17 public void onMessage(Message message) {
18 TextMessage msg = (TextMessage) message;
19 try {
20 String txt = msg.getText();
21 Logger.getLogger(JMSReceiveBean.class.getName()).log(Level.SEVERE, txt);
22 } catch (Exception ex) {
23 ex.printStackTrace();
24 }
25 }
26 });
27
28 connection.start();
29 }
30
31 public void receiveMessage() {
32 try
33 receiveJMSMessageFromQueue();
34 } catch (Exception ex) {
35 Logger.getLogger(JMSReceiveBean.class.getName()).log(Level.SEVERE, null, ex);
36 }
37 }
38}
在15行消息使用者上设置了一个消息监听器,而没有使用同步的receive方法。由于这是异步接收消息,程序并没有处于阻塞状态,为了避免在接收到消息之前连接终止,所以在28行之后并没有关闭Connection,实际上这一步是不可缺少的。
分享到:
相关推荐
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms....
JMS583是一款由JMicron科技公司设计的高性能USB 3.1 Gen 2至PCIe Gen3x2桥接芯片,旨在为存储设备提供高速数据传输能力。这款芯片是针对现代数据密集型应用而优化的,如SSD固态硬盘和外部存储解决方案,它能够充分...
javax.jms.BytesMessage.class javax.jms.Connection.class javax.jms.ConnectionConsumer.class javax.jms.ConnectionFactory.class javax.jms.ConnectionMetaData.class javax.jms.DeliveryMode.class javax.jms....
`javax.jms.jar` 文件中包含了如`javax.jms.Queue`, `javax.jms.Topic`, `javax.jms.MessageProducer`, `javax.jms.MessageConsumer`, `javax.jms.ConnectionFactory`等关键接口,以及其他辅助类和异常类,开发者...
2. **消息生产者(Message Producer)**:负责创建和发送消息到消息队列或主题的实体。生产者通过`Session`对象创建消息,并使用`MessageProducer`对象将其发送到目的地。 3. **消息消费者(Message Consumer)**:...
JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS
2. **消息模型**:JMS支持两种消息模型——点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。在点对点模型中,消息从一个队列(Queue)中发送到另一个队列,每个消息仅被一个消费者接收。...
2. **JMS客户**:基于Java的应用程序或对象,它们是消息的生产者或消费者。 3. **JMS生产者**:创建并发送消息的组件。 4. **JMS消费者**:接收和处理消息的组件。 5. **JMS消息**:包含数据的对象,由报头和消息...
《JMS 1.1.jar:Java消息服务与Maven的深度解析》 在Java开发领域,消息服务(Java Message Service,简称JMS)扮演着至关重要的角色,它为应用程序提供了一种标准的方式来创建、发送、接收和读取消息。JMS 1.1.jar...
6. **JMS in Application Servers**:JMS通常集成在J2EE(Java 2 Enterprise Edition)应用服务器中,作为其组件服务的一部分,提供消息服务的便捷接入和管理。 使用JMS的优势在于: - **异步处理**:JMS允许应用...
2. **消息模型**:JMS支持两种消息传递模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。在P2P模型中,每个消息仅由一个消费者接收,通常通过队列实现;在Pub/Sub模型中,消息可以被...
**JMS583 USB转PCIE桥接芯片方案** JMS583是一款由JMicron科技公司设计的高效能USB到PCI Express (PCIe)桥接芯片,旨在为电子设备提供一种灵活的方式来实现高速数据传输。这款芯片能够将USB接口转换成PCIe接口,以...
文件包含: 13个不同固件 两个固件升级工具 其中一个是量产工具可以修改休眠时间和盒子信息 TRIM检查工具 有几个固件版本为全网首发,别人没有的资源 固件列表: JMS578_00.01.00.05 ...JMS578_254.02.03.09_NoUAS
JMicron JMS578 USB/SATA bridge JMS578介绍手册JMS578_Product+Brief.pdf JMS578固件(支持Android系统/linux系统) JMS578 windows的烧录工具和JMS578FwUpdate JMS578-Hardkenel-Release-v173.01.00.02-20190306....
2. **JMS API**: - **ConnectionFactory**:创建连接到消息代理的工厂对象。 - **Connection**:应用程序与消息代理之间的物理连接。 - **Session**:在连接内创建的线程安全的上下文,用于创建消息消费者和生产...
2. **消息队列(Message Queue)与主题(Topic)**: JMS提供了两种消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe)。在P2P模型中,消息被发送到一个消息队列,每个消息只被一个消费者接收...
2. **配置JMS服务器**:在JMS模块下,添加JMS服务器,设置服务器名称、存储区配置等。 3. **创建连接工厂**:这是客户端连接到JMS提供者的桥梁,可以创建QueueConnectionFactory和TopicConnectionFactory。 4. **...
2. 事务管理:Spring JMS如何利用JMS的事务特性来保证消息的一致性。例如,当启用事务时,JmsTemplate如何确保消息在所有操作成功后才真正发送,或者在任何异常发生时回滚。 3. 消息监听:MessageListenerContainer...
- 队列 2:`sqout`,`jms/maximo/int/queues/sqout` - 队列 3:`cqin`,`jms/maximo/int/queues/cqin` - 创建与队列同名的新子部署。 - 将子部署的目标服务器设为 `subdeployment_nameserver`。 - **目的**:...