2

私は 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 もメッセージを受信する必要があります

4

1 に答える 1

1

ブローカー URL は VM リソース内を参照しています。

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

activemq の接続ページを確認してください。

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

これはあなたを助ける可能性が最も高いものです: http://activemq.apache.org/connection-configuration-uri.html

于 2012-03-09T00:28:57.390 に答える