私は JMS を初めて使用します。JMS および ActiveMQ プラグインのドキュメントを読みましたが、まだ明確ではありません。
ActiveMQ が埋め込まれたマシン A でホストされている Grail アプリがメッセージを送信できるシステムを構築しようとしています。また、JMS プラグインのみを使用してマシン B でホストされている別の Grails アプリは、メッセージを受信して応答できるはずです。
ドキュメントを読んだ後、コントローラーがマシンAのサービスにメッセージを送信し、コンソールにメッセージを表示するマシンAにgrailsアプリを作成しました。現在、マシン 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 のコントローラーからメッセージが送信されると、マシン A のサービスはコンソールにメッセージを表示しますが、マシン B はメッセージを表示しません。
想定: マシン B もメッセージを受信する必要があります