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


基于Java通讯开发jms源代码 (jms通讯开发源码) java,net,socket,通讯开发,jms /* * @(#)Message.java 1.60 02/04/09 * * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved. * * SUN PROPRIETARY/CONFIDENTIAL. * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ import java.util.Enumeration; public interface Message { String getJMSMessageID() throws JMSException; void setJMSMessageID(String id) throws JMSException; long getJMSTimestamp() throws JMSException; void setJMSTimestamp(long timestamp) throws JMSException; byte [] getJMSCorrelationIDAsBytes() throws JMSException; void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException; String getJMSCorrelationID() throws JMSException; Destination getJMSReplyTo() throws JMSException; void setJMSReplyTo(Destination replyTo) throws JMSException; Destination getJMSDestination() throws JMSException; void setJMSDestination(Destination destination) throws JMSException; int getJMSDeliveryMode() throws JMSException; void setJMSDeliveryMode(int deliveryMode) throws JMSException; boolean getJMSRedelivered() throws JMSException; void setJMSRedelivered(boolean redelivered) throws JMSException; String getJMSType() throws JMSException; void setJMSType(String type) throws JMSException; long getJMSExpiration() throws JMSException; void setJMSExpiration(long expiration) throws JMSException; int getJMSPriority() throws JMSException; void setJMSPriority(int priority) throws JMSException; void clearProperties() throws JMSException; boolean propertyExists(String name) throws JMSException; boolean getBooleanProperty(String name) throws JMSException; byte getByteProperty(String name) throws JMSException; short getShortProperty(String name) throws JMSException; int getIntProperty(String name) throws JMSException; long getLongProperty(String name) throws JMSException; float getFloatProperty(String name) throws JMSException; double getDoubleProperty(String name) throws JMSException; String getStringProperty(String name) throws JMSException; Object getObjectProperty(String name) throws JMSException; Enumeration getPropertyNames() throws JMSException; void setBooleanProperty(String name, boolean value) throws JMSException; void setByteProperty(String name, byte value) throws JMSException; void setShortProperty(String name, short value) throws JMSException; void setIntProperty(String name, int value) throws JMSException; void setLongProperty(String name, long value) throws JMSException; void setFloatProperty(String name, float value) throws JMSException; void setDoubleProperty(String name, double value) throws JMSException; void setStringProperty(String name, String value) throws JMSException; void setObjectProperty(String name, Object value) throws JMSException; void acknowledge() throws JMSException; void clearBody() throws JMSException; } 通讯开发必备源码资料!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值