我有兩個項目,一個服務項目中一個又一個消費項目的遠程服務,
消費項目佔用其他項目的服務和呼叫應該是異步使用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