为groovy原型增加前端同步接收消息示例

groovy原型的前端部分,手机端会通过http定时发送请求并获取相应。从jms队列中取走一个消息。这个过程,因为是http协议,不能保持连接,因此只能同步的获取jms消息。

增加的代码见sms_send.gsp:


import org.apache.log4j.Logger;

def log=Logger.getLogger(this.getClass())
log.debug(‘sms send …’)

def message

if(request.parameters.phone){
    log.debug("phone number: ${request.parameters.phone}")
    message=receiveMessage(request.parameters.phone)
    if(!message){
        message=’–’
    }else{
        message=message.text
    }
}

println "收到消息,内容是:${message}"

log.debug(‘sms finished.’)

def receiveMessage(phone){
    def connectionFactory=new GroovyClassLoader().parseClass(new File("${application.getRealPath(”)}/WEB-INF/groovy/JMSService.groovy")).newInstance().connectionFactory
    def connection=connectionFactory.createConnection()
    connection.start()
    def session=connection.createSession(true,javax.jms.Session.AUTO_ACKNOWLEDGE)
    def destination=session.createQueue("outbound-${phone}")
    def consumer=session.createConsumer(destination)
    def message=consumer.receiveNoWait()
    session.commit()
    connection.close()
    message
}

源代码见:

http://easymorse.googlecode.com/svn/tags/sms-service_1.2/

PDF格式創作    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply