我有两个项目,一个服务项目中一个又一个消费项目的远程服务,
消费项目占用其他项目的服务和呼叫应该是异步使用JMS调用使用JMS
我在两个安装JMS插件
我在resources.groovy
import org.springframework.jms.connection.SingleConnectionFactory
import org.apache.activemq.ActiveMQConnectionFactory
beans = {
jmsConnectionFactory(org.apache.activemq.ActiveMQConnectionFactory) { brokerURL = 'vm://localhost' }
}
注意定义的JMSConnectionFactory在这两个项目如下项目:这两个项目现在都在同一台机器上(即本地主机)
从消费者的控制器现在我正在调用从的ServiceProvider项目服务
jmsService.send(service:'serviceProvider', params.body)
在的ServiceProvider服务被定义为跟随
import grails.plugin.jms.*
class ServiceProviderService {
def jmsService
static transactional = true
static exposes = ['jms1']
def createMessage(msg) {
print "Called1"
sleep(2000) // slow it down
return null
}
}
现在,当控制器提交为其服务电话成功提交但未达到实际服务
我也试过
jmsService.send(app: "ServiceProvider", service: "serviceProvider", method: "createMessage", msg, "standard", null)
更新
现在我已经安装ActiveMQ的插件服务提供商,使它嵌入式代理(JMS已经存在)
并创建一个服务
package serviceprovider
class HelloService {
boolean transactional = false
static exposes = ['jms']
static destination = "queue.notification"
def onMessage(it){
println "GOT MESSAGE: $it"
}
def sayHello(String message){
println "hello"+message
}
}
resources.groovy
这两个项目现在是
import org.springframework.jms.connection.SingleConnectionFactory
import org.apache.activemq.ActiveMQConnectionFactory
beans = {
jmsConnectionFactory(org.apache.activemq.ActiveMQConnectionFactory) { brokerURL = 'tcp://127.0.0.1:61616' }
}
从消费者的控制器我打电话这项服务像下面
jmsService.send(app:'queue.notification',service:'hello',method: 'sayHello', params.body)
调用方法被提出,但实际上它是没有得到所谓的!
谢谢!请参阅有关更新 – 2012-03-03 20:09:25