groovy开发原型增加jms发送消息示例

通过jms消息队列,可以可靠传输消息,另外,可以异步传输,简化编程模型。在为groovy原型增加sql示例原型基础上,增加了对jms的支持,并且写了个发送的简单示例。

示例运行效果:

image

消息服务器使用了activemq,需要提前部署一个activemq-web-console的war文件到tomcat中,这样不但可以提供activemq消息服务器,还带一个web界面的监控应用。类似这样:

image

消息正文如果是中文,会是问号,实际上没有问题,是该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>
"""

 

源代码见:

http://easymorse.googlecode.com/svn/tags/groovy.proto.1.2/

PDF下載    发送文章为PDF   

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

Leave a Reply