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

 

使用 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 ;

                            }

                   });

         }

}

你可能感兴趣的:(spring,String,session,jms,null)