Я новичок в 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 также должна получать сообщения