groovy开发原型增加jms发送消息示例
通过jms消息队列,可以可靠传输消息,另外,可以异步传输,简化编程模型。在为groovy原型增加sql示例原型基础上,增加了对jms的支持,并且写了个发送的简单示例。
示例运行效果:
消息服务器使用了activemq,需要提前部署一个activemq-web-console的war文件到tomcat中,这样不但可以提供activemq消息服务器,还带一个web界面的监控应用。类似这样:
消息正文如果是中文,会是问号,实际上没有问题,是该web应用显示的编码问题。
activemq-web-console的安装过程见tomcat下部署activemq。
涉及groovy发送消息的文件有两个。第一个,配置activemq信息和获取ConnectionFactory方法,实现类似sql部分。见JMSService.groovy:
import org.apache.activemq.ActiveMQConnectionFactory;
class JMSService{
private static connectionFactory
def url="tcp://localhost:61616"
def username=""
def password=""
def initConnectionFactory(){
connectionFactory=new ActiveMQConnectionFactory(url)
}
def getConnectionFactory(){
if(!connectionFactory){
initConnectionFactory()
}
connectionFactory
}
}
另外一个,就是hello.gsp中的调用:
def connectionFactory=classloader.parseClass(new File("${realpath}/WEB-INF/groovy/JMSService.groovy")).newInstance().connectionFactory
…
def sendMessageToQueue(connectionFactory,queueName,tag,text){
def connection=connectionFactory.createConnection()
connection.start()
def session=connection.createSession(true,javax.jms.Session.AUTO_ACKNOWLEDGE)
def destination=session.createQueue(queueName)
def producer=session.createProducer(destination)
producer.setDeliveryMode(javax.jms.DeliveryMode.PERSISTENT)
def message=session.createTextMessage(text)
message.setStringProperty(‘tag’,tag)
producer.send(message)
session.commit()
connection.close()
‘sucess.’
}
…
println """
<div>
发送消息到队列 … ${sendMessageToQueue(connectionFactory,’myqueue’,’15201234567′,’你好’)}
</div>
"""
源代码见:
日志引用
这篇文章上的评论的 RSS feed TrackBack URI