我已经尝试将本地应用程序连接到 CloudFoundry 服务上的远程rabbitMQ 一周了,但结果是: 连接=工厂.newConnection(); 由于 java.net.SocketTimeoutException: Read timed out 总是抛出 IOException 我已正确遵循本教程的步骤来创建隧道并收集其信息,但它仍然不起作用。 这是我用来连接本地应用程序的线:
String rabbitMQURI = “amqp://ubSGLHE7886x6:pk6NV4xxxxxx@localhost:10100/ve296d42a44794aac92536b362681e92a”;
factory.setUri(rabbitMQURI);
只是想确保当您尝试将本地java应用程序连接到CFrabbitmq服务时,您首先通过运行“vmctunnelservicename”打开了一个隧道。这将为您提供连接属性:用户名、密码、虚拟主机(虚拟主机)和端口(正如 Dan 所说,如果您没有打开其他隧道,它应该从 10000 开始)。您需要使用主机名“localhost”。为了使用它,请确保在您的主机文件中 127.0.0.1 映射到名称“localhost”。
我可以使用这些代码行毫无问题地连接到我自己的隧道:
ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://usd0LnHpwPMvE:p3faI9Ug8E1au@localhost:10000/v51d86f3a7033476695655e42eaa16b1f");
Connection conn = factory.newConnection();
Channel channel = conn.createChannel();
您确定端口号正确吗?如果您没有任何其他活动隧道,则默认起始端口为 10000。
不幸的是,我相信您不能将 vmc 隧道与 RabbitMQ 服务一起使用,只能与数据库服务一起使用。我不相信 AMQP 端口被映射了。
看看 http://support.cloudfoundry.com/entries/20334618-rabbitmq-service-faq,你会看到它说:
问题: CloudFoundry.com 之外的应用程序是否可以访问 RabbitMQ 服务?
回答: 目前没有。