Доступ к Grails ActiveMQ с удаленной машины - PullRequest
2 голосов
/ 09 марта 2012

Я новичок в JMS. Я прочитал документацию по плагинам JMS и ActiveMQ, но до сих пор не совсем понял.

Я пытаюсь создать систему, в которой приложение Grail, размещенное на компьютере A со встроенным в него ActiveMQ, должно отправлять сообщения. И еще одно приложение Grails, размещенное на компьютере B только с плагином JMS, должно иметь возможность получать сообщения и отвечать на них.

После прочтения документации я создал приложение grails на машине A, где контроллер отправляет сообщение в службу на машине 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: Grails 2.1 в Unix с установленными плагинами (ActiveMQ и JMS)

Машина B: Grails 2.1 в Unix с установленными плагинами (JMS)

Текущий выпуск:

Когда сообщение отправляется с контроллера на машину A Служба на компьютере A отображает сообщение в консоли, но машина B не

Ожидаемое: Машина B также должна получать сообщения

1 Ответ

1 голос
/ 09 марта 2012

URL вашего брокера ссылается на ресурс виртуальной машины:

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

Пожалуйста, просмотрите страницу подключения в activemq:

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

Это тот, который скорее всего вам поможет: http://activemq.apache.org/connection-configuration-uri.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...