Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2911452
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Java

2014-05-19 15:18:00

基于Oracle高级队列的JMS开发

Oracle AQ

? 主要特点:

– 支持多种语言的客户端:

? JavaC#CC++PHPPythonJavaScriptFlash、……

– 支持多种协议:

? OpenWireRESTStompWS NotificationXMPPAMQP

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

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

 

开发基于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());

 

 

阅读(8384) | 评论(0) | 转发(0) |
0

上一篇:Java消息服务JMS

下一篇:oracle高级队列

给主人留下些什么吧!~~