2012-06-13 20 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? –

相关问题