无法从远程机器(Android 设备)连接到 RabbitMQ 服务器 [英] Cannot connect to RabbitMQ Server from remote machine (Android device)

查看:95
本文介绍了无法从远程机器(Android 设备)连接到 RabbitMQ 服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在本地机器(Windows 10)上启动了 RabbitMQ 服务器.localhost:5672 上的管理面板运行良好.我建立了新用户并用java编写了用于发送和接收的示例项目.它适用于本地主机和我的新用户的 IP 地址:

I've started RabbitMQ server on my local machine (Windows 10). Management panel on localhost:5672 is working well. I've established new user and wrote example project in java for sending and receiving. It works well with localhost and with my ip address for new established user:

不幸的是我在我的 Android 项目中编写了相同的配置并且出现错误:

12-27 00:42:04.601 4393-4393/com.gornik.sendsensors E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: com.gornik.sendsensors, PID: 4393
                                                                  android.os.NetworkOnMainThreadException
                                                                      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
                                                                      at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
                                                                      at libcore.io.IoBridge.connectErrno(IoBridge.java:154)
                                                                      at libcore.io.IoBridge.connect(IoBridge.java:122)
                                                                      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
                                                                      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
                                                                      at java.net.Socket.connect(Socket.java:884)
                                                                      at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:47)
                                                                      at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:822)
                                                                      at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:778)
                                                                      at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:868)
                                                                      at com.gornik.sendsensors.SendMessages.connectAndPublishMessage(SendMessages.java:27)
                                                                      at com.gornik.sendsensors.MainActivity$1.onClick(MainActivity.java:25)
                                                                      at android.view.View.performClick(View.java:5702)
                                                                      at android.view.View$PerformClick.run(View.java:22541)
                                                                      at android.os.Handler.handleCallback(Handler.java:739)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                      at android.os.Looper.loop(Looper.java:158)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:7229)
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

connectAndPublishMessage"方法:

"connectAndPublishMessage" method:

public static void connectAndPublishMessage(String serverIPAddress) throws IOException{
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("IP ADDRESS");
    factory.setUsername("NEWUSER");
    factory.setPassword("USERPASSWORD");
    factory.setVirtualHost("/");
    factory.setPort(5672);
    try {
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello world";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
        Log.d("MESSAGE SENT: ", " [x] Sent '" + message + "'");

        channel.close();
        connection.close();
    }catch(TimeoutException e){
        e.printStackTrace();
    }
}

你能弄清楚为什么它在我的本地机器和 Android 设备上不同?如何将我的 Android 设备连接到远程 RabbitMQ 服务器?

推荐答案

尝试添加以下两行:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

这篇关于无法从远程机器(Android 设备)连接到 RabbitMQ 服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆