Java 连接被拒绝的云amqp
我正在使用cloudamqp消息服务来尝试MQs(在本例中是RabbitMQ)。我试图将一条消息从Java类推送到队列中,但它总是说: 拒绝连接 另外,System.getenv返回null(我也很难接受) 以下是代码和例外情况:Java 连接被拒绝的云amqp,java,rabbitmq,queue,amqp,cloudamqp,Java,Rabbitmq,Queue,Amqp,Cloudamqp,我正在使用cloudamqp消息服务来尝试MQs(在本例中是RabbitMQ)。我试图将一条消息从Java类推送到队列中,但它总是说: 拒绝连接 另外,System.getenv返回null(我也很难接受) 以下是代码和例外情况: String uri = System.getenv("amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost"); if (uri == null) uri = "amqp://guest
String uri = System.getenv("amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost");
if (uri == null) uri = "amqp://guest:guest@localhost";
ConnectionFactory factory = new ConnectionFactory();
try {
factory.setUri(uri);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
//Recommended settings
factory.setRequestedHeartbeat(30);
factory.setConnectionTimeout(60000);
Connection connection = null;
try {
connection = factory.newConnection(); //Getting Null Pointer here
} catch (TimeoutException e) {
e.toString();
堆栈跟踪:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:134)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:997)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:956)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:914)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1068)
当我捕获泛型异常时,它捕获空指针异常:
String uri = System.getenv("amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost");
if (uri == null) uri = "amqp://guest:guest@localhost";
ConnectionFactory factory = new ConnectionFactory();
try {
factory.setUri(uri);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
//Recommended settings
factory.setRequestedHeartbeat(30);
factory.setConnectionTimeout(60000);
Connection connection = null;
try {
connection = factory.newConnection(); //Getting Null Pointer here
} catch (TimeoutException e) {
e.toString();
java.lang.NullPointerException
@connection=factory.newConnection()
这很奇怪,,
您可以将uri设置为常量:
String uri = "amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost";
或者尝试通过环境变量的名称获取其uri值
System.getenv("AMQP_CONNECTION_STRING");
if (uri == null) uri = "amqp://guest:guest@localhost";
你认为
System.getenv()
有什么作用?您正在尝试检索名为amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost
我不认为这是您想要做的。您应该尝试设置一个类似于CLOUDAMQP\u URL的环境变量=amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost
使用导出
(在linux中)或set
(在windows中)我不确定。我只是从cloudamqp教程中复制了这个示例。让我尝试使用uri=”amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost“关于空指针,请确认什么是空的?(连接或工厂)您可以将环境变量设置为@piy26建议并检索该变量,或者直接按照建议设置值。已工作:D谢谢