2

我是 JMS 的新手。我阅读了 JMS 和 ActiveMQ 插件文档,但仍然不清楚。

我正在尝试构建一个系统,其中托管在机器 A 上并嵌入 ActiveMQ 的 Grail 应用程序应该能够发送消息。另一个托管在机器 B 上且仅带有 JMS 插件的 Grails 应用程序应该能够接收消息并对其做出响应。

阅读文档后,我在机器 A 上创建了一个 grails 应用程序,控制器将消息发送到机器 A 上的服务,并在控制台上显示消息。现在我正在尝试在机器 B 上实现具有类似行为的服务。

在 Machine 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 上的控制器发送消息时,机器 A 上的服务会在控制台中显示消息,但机器 B 不会

预期:机器 B 也应该收到消息

4

1 回答 1

1

您的代理 URL 引用 VM 中的资源:

brokerURL = 'vm://machineA.mydomain.com'

请查看 activemq 中的 Connection 页面:

http://activemq.apache.org/configuring-transports.html

这是最有可能帮助您的一个:http: //activemq.apache.org/connection-configuration-uri.html

于 2012-03-09T00:28:57.390 回答