2012-06-13 53 views
-1

您好我正在嘗試在Android中使用RabbitMQ開發聊天應用程序。 代碼與我本地安裝的rabbitMQ服務器正常工作。使用RabbitMQ的Cloudfoundry的Android應用程序

Inordrer將消息發送到隊列我的android應用程序需要它正在與之通話的robbitMQ服務器的地址。 我可以在cloudfoundry上使用RabbitMQ,在應用程序代碼中替換我的本地rabbitMQ嗎?

ConnectionFactory factory = new ConnectionFactory(); 
factory.setHost("<RobbitMQ server>"); 


Connection connection = factory.newConnection(); 
Channel channel = connection.createChannel(); 
channel.exchangeDeclare(EXCHANGE_NAME, "fanout", true); 
channel.queueDeclare(QUEUE_NAME, false, false, false, null); 

回答

1

你會面對這樣的兩個問題:

  1. 上cloudfoundry.com的RabbitMQ的服務的地址將被動態分配的......你可以看看它從環境向上在web應用程序中的cloudfoundry.com上,但您無法輕鬆地將其獲取到遠程原生Android應用程序中。
  2. 現在,您無法將遠程AMQP連接轉變爲cloudfoundry.com上的服務 - 只有在Cloud Foundry vcap環境中的之內。因此,即使您有地址,通過JMS直接從Android應用程序進行AMQP連接也不會奏效。

如何在EC2實例上運行RabbitMQ?或者爲您的Android應用程序構建一個Web應用程序後端,與在Cloud Foundry實例中運行的RabbitMQ交談,Android通過SockJS與後端通信?

+0

感謝andy ..我想我會建立一個webapp使用彗星爲長池 –

+0

我鼓勵你看看SockJS而不是彗星,它來自RabbitMQ團隊,並與長期投票和websockets很好。 –

+0

謝謝,我將探索Sock.js.說了彗星可能需要我修改org.apache.coyote.http11.Http11NioProtocol的Servlet.xml。 cloudfoundry是否允許您修改Servelt.xml? –

相關問題