Java 从远程计算机访问Grails ActiveMQ

Java 从远程计算机访问Grails ActiveMQ,java,grails,jms,activemq,spring-jms,Java,Grails,Jms,Activemq,Spring Jms,我是个新手。。我阅读了JMS和ActiveMQ插件文档,但仍然不清楚 我正在尝试构建一个系统,其中托管在机器a上的Grail应用程序(其中嵌入了ActiveMQ)应该能够发送消息。另一个托管在机器B上的Grails应用程序,只有JMS插件,应该能够接收消息并响应消息 阅读完文档后,我在机器a上创建了一个grails应用程序,其中控制器将消息发送到机器a上的服务,并在控制台上显示消息。现在,我正在尝试在机器B上实现具有类似行为的服务 在机器B上进行配置后,my resource.groovy如下所

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

我正在尝试构建一个系统,其中托管在机器a上的Grail应用程序(其中嵌入了ActiveMQ)应该能够发送消息。另一个托管在机器B上的Grails应用程序,只有JMS插件,应该能够接收消息并响应消息

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

在机器B上进行配置后,my 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 }
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和B上的服务如下所示:

 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 }
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: 安装了插件(ActiveMQ和JMS)的Unix上的Grails 2.1

机器B: 安装了插件(JMS)的Unix上的Grails2.1

当前问题:

从机器A上的控制器发送消息时 机器A上的服务在控制台中显示消息,但机器B不显示

预期:
机器B还应接收消息

您的代理URL引用了虚拟机中的资源:

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

请查看activemq中的连接页面:


这是最有可能帮助你的一个:

谢谢约翰:但是我试过了tcp://machineA.mydomain.com:61616?jms.useAsyncSend=true'但即使这样也不起作用…将尝试查看http是否在您的服务器机器上工作a,您是否启用了侦听器?嘿,John。。。。。OnNotificationService是侦听器。我在机器A和机器B上实现了完全相同的侦听器。当我从机器A发送消息时,我看到消息打印在机器A的控制台上,但没有打印在机器B的控制台上。