我是JMS的新手。我阅读了JMS和ActiveMQ插件文档,但仍然不清楚它。
我正在尝试构建一个系统,其中在机器A上托管的Grail应用程序中嵌入了ActiveMQ应该能够发送消息。而另一个只在JMS插件上托管在机器B上的Grails应用程序应该能够接收消息并对其做出响应。
在阅读文档后,我在机器A上创建了一个grails App,其中控制器将消息发送到机器A上的服务,并在控制台上显示消息。现在我正在尝试在机器B上实现具有类似行为的服务。
在机器B上配置后,我的resource.groovy看起来像这样:
1
2 import org.apache.activemq.ActiveMQConnectionFactory
3 import org.springframework.jms.connection.SingleConnectionFactory
4 beans = {
5
6 jmsConnectionFactory(SingleConnectionFactory) {
7 targetConnectionFactory = { ActiveMQConnectionFactory cf ->
8 brokerURL = 'vm://machineA.mydomain.com'
9 }
10 }
11 }
机器A和B上的服务看起来像这样:
1 package replicationsiteapp
2
3 import grails.plugin.jms.*
4
5 class OnNotificationService {
6
7
8 boolean transactional = false
9 static exposes = ['jms']
10 static destination = "topic.notify"
11 boolean isTopic = true
12
13
14 @Subscriber(topic = "topic.notify")
15 def onTopicMessage(it){
16
17 println " YOU GOT MESSAGE FROM : $it"
18 }
19
24 }
25
机器A上的控制器:
package hello
class NotificationController {
def index() {
def message = "Hi, this is a Hello World with JMS & ActiveMQ, " + new Date()
sendTopicJMSMessage("topic.notify",message)
render message
}
}
机器A: Unix上安装了插件的Grails 2.1(ActiveMQ和JMS)
机器B: 安装了插件的Unix上的Grails 2.1(JMS)
当前问题:
从机器A上的Controller发送消息时 机器A上的服务在控制台中显示消息,但机器B不显示
预期: 机器B也应该收到消息
答案 0 :(得分:1)
您的代理URL指的是VM资源:
brokerURL ='vm://machineA.mydomain.com'
请查看activemq中的“连接”页面:
http://activemq.apache.org/configuring-transports.html
这是最有可能帮助您的人:http://activemq.apache.org/connection-configuration-uri.html