您的位置:首页 > 编程语言 > Java开发

Spring JMS使用回调接口发送消息

2009-05-24 16:20 483 查看
使用

execute()

方法


Send()
方法适合普通的消息发送操作
,
但有时需要在
session

MessageProducer
上执行多个操作
,
对此
Spring
提供了
SessionCallback


ProducerCallback
回调接口开放出
Session

MessageProducer,
用记可以使用原生的
JMS
API
进行操作
;

SessionCallback
回调接口的方法

Object
doInJms(Session sessin)

用户可以先接收一个消息
,
然后再发送一个消息执行多个操作

MessageSender.java


package


cn.com.snt.spring_jms;

import


javax.jms.Destination;

import


javax.jms.JMSException;

import


javax.jms.MessageConsumer;

import


javax.jms.MessageProducer;

import

javax.jms.Session;

import


javax.jms.TextMessage;

import


org.springframework.jms.core.ProducerCallback;

import


org.springframework.jms.core.SessionCallback;

import


org.springframework.jms.core.support.JmsGatewaySupport;

public


class


MessageSenderCallback
extends

JmsGatewaySupport{

public


void

transmit(
final

String
fromQueue,
final

String toQueue){

getJmsTemplate().execute(
new


SessionCallback(){

public

Object
doInJms(Session session)
throws

JMSException {

Destination
fromDest=session.createQueue(fromQueue);

Destination
toDest=session.createQueue(toQueue);

MessageConsumer
consumer=session.createConsumer(fromDest);

System.
out

.println(
"receive
msg......"
);

TextMessage
msg=(TextMessage) consumer.receiveNoWait();

if

(msg!=
null

){

System.
out

.println(
"receiver
msg "
+msg +
"/n messingID"
+msg.getJMSMessageID());

MessageProducer
producer=session.createProducer(toDest);

producer.send(msg);

System.
out

.println(
"msg
sended!"
);

}

return


null

;

}

});

}

public


void


transmit1(){

getJmsTemplate().execute(
new


ProducerCallback(){

public

Object
doInJms(Session session, MessageProducer producer)

throws


JMSException {

return


null

;

}

});

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: