基于Oracle高级队列的JMS开发

基于Oracle高级队列的JMS开发

Oracle AQ

主要特点:

– 支持多种语言的客户端

– 支持多种协议:

– 可与多种企业平台集成。

– 支持消息分组、虚拟目的地、通配符等高级功能。

开发基于JMS的应用

依赖

 JavaEE: javax.jms.*

 Oracle AQ

开发JMS客户端

 JMS 消息发送方

 JMS 消息接收方

 

JMS API 编程模型

 

开发消息发送端(PTP模型)

1.创建连接工厂

2.创建JMS客户端到JMS Provider的连接

3.启动连接

4.创建会话

5.创建Queue类型的消息队列,指定消息目的地。

6.从会话中创建到指定目的地的消息生产者。

7.设置消息传递模式。

8.创建并发送消息。

9.关闭会话和连接。

1. 创建连接工厂

import javax.jms.ConnectionFactory

import oracle.jms.AQjmsFactory

import oracle.jms.AQjmsTopicConnectionFactory

AQjmsConnectionFactory aqFactory ;

aqFactory= (AQjmsTopicConnectionFactory)AQjmsFactory.getTopicConnectionFactory(host,sid,port,protocol)

2. 创建到JMS Provider的连接

import javax.jms.Connection

import java.sql.Connection

Connection dbConnection;

Connection aqConnection = aqFactory.createConnection(dbConnection)

3. 启动连接

aqConnection.start()

4. 创建会话

import javax.jms.TopicSession

import oracle.jms.AQjmsSession

Session aqSession = aqConnection.createTopicSession

(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE)

Session createTopicSession(boolean transacted,

int acknowledgeMode)

throws JMSException

5. 创建Topic类型的消息队列

import javax.jms.Topic

Topic topic = aqSession.getTopic(schemaName,aqName);

Topic getTopic(String schemaName,String aqName)

throws JMSException

6. 创建到指定目的地的消息生产者

import oracle.jms.AQjmsTopicPublisher

import javax.jms.TopicPublisher

AQjmsTopicPublisher topicPublisher = (AQjmsTopicPublisher) aqSession.createPublisher(topic)

7. 设置消息传递模式

topicPublisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

void setDeliveryMode(int deliveryMode)

throws JMSException

8. 创建并发送消息

import javax.jms.Message

import oracle.jms.AQjmsAdtMessage

Message message = (AQjmsAdtMessage)aqSession.createAQjmsAdtMessage(object);

topicPublisher.publish(message);

9. 关闭会话和连接

aqSession.close();

aqConnection.close();

 

开发消息接收端

1.创建连接工厂

2.创建JMS客户端到JMS Provider的连接

3.启动连接

4.创建会话

5.创建Topic类型的消息队列,指定消息源。

6.从会话中创建消息消费者。

7.接收消息(两种方式)

– 直接接收。

– 设置消息监听器。

8.关闭会话和连接。

6. 从会话中创建消息消费者

import javax.jms.TopicSubscriber

import oracle.jms.AQjmsTopicSubscriber

AQjmsTopicSubscriber topicSubscriber = aqSession.getDurableSubscriber(topic,aqName,ora)

7.接收消息

    Message message = (AQjmsAdtMessage)topicSubscriber.receive();

7. 设置消息监听器

public class AQMessageListener implements MessageListener {

@Override

public void onMessage(Message msg) {

AQjmsAdtMessage Msg = (AQjmsAdtMessage) msg;

try {

System.out.println("接收到的消息是:" + Msg.get??????????());

} catch (JMSException e) {

e.printStackTrace();

    }

}

}

topicSubscriber.setMessageListener(new AQMessageListener());


猜你喜欢

转载自blog.csdn.net/y532798113/article/details/80027300