2012-03-08 55 views
2

我是新來的JMS的東西..我讀了JMS和ActiveMQ的插件文件,但仍與它不明確。訪問的Grails的ActiveMQ從遠程計算機

我想建立一個系統,其中託管在機器A內嵌有一個的ActiveMQ聖盃的應用程序應該能夠發送消息的。而另一個只有JMS插件的機器B上託管的Grails應用程序應該能夠接收消息並對其作出響應。

閱讀文檔後我創建機器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 
    } 
} 

機答: 的Grails 2.1在Unix與已安裝的插件(ActiveMQ的和JMS)

機B: 的Grails 2.1在Unix與已安裝的插件(JMS)

本期:

當從控制器發送的消息上機上機A A 服務在控制檯顯示消息,但機器B不列入

預期: 機B還應當接收消息

回答

1

你的經紀人URL指的是在虛擬機資源:

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

請檢查連接頁面中的ActiveMQ:

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

這是最有可能幫助你的人:http://activemq.apache.org/connection-configuration-uri.html

+0

感謝約翰:但是我還是「TCP://machineA.mydomain.com:61616 jms.useAsyncSend =真正的」,但即使沒有工作......會嘗試看看是否h ttp在您的服務器machineA上運行 – 2012-03-09 00:55:28

+0

,您是否啓用了偵聽器? – 2012-03-10 00:45:21

+0

嘿約翰..... OnNotificationService是監聽器。我在機器A和機器B上都實現了完全相同的監聽器。當我從機器A發送消息時,我看到消息打印在機器A的控制檯上,但未在機器B的控制檯上打印。 – 2012-03-15 21:13:56