为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
}
源代码见:
这篇文章上的评论的 RSS feed TrackBack URI