无法在本机应用程序中连接到rabbitmq 服务器

Shr*_*rix 1 rabbitmq react-native

我正在尝试将rabbitmq 集成到本机应用程序上

参考这个库:https : //www.npmjs.com/package/react-native-rabbitmq

我尝试使用适当的配置属性创建一个 Connection 对象。但是当我试图检查let connection = new Connection(config);我收到以下结果时:

Connection {rabbitmqconnection: Object, callbacks: Object, connected: false}在连接对象中。如您所见,它给出了connected: false

我已经提到在节点端创建 rabbit mq 服务器:https : //www.rabbitmq.com/tutorials/tutorial-one-javascript.html来创建一个正常工作的节点 rabbit mq 服务器。现在我需要在客户端接收消息

我确信配置属性和rabbitmq 服务器运行正常,因为使用相同的我可以从单独的节点服务器连接到rabbit mq。试图在这两个添加记录器connection.on('error')和中connection.on('connected'),但没有得到任何日志

无法理解问题出在哪里。有人可以帮助或建议一个更好的图书馆吗?需要在 react-native 上集成 RabbitMQ

const config = {
        host: '192.0.0.1', //dummy values
        port: 5672,
        username: 'username',
        password: 'password',
        virtualhost: 'vhost'
    };
    const connection = new Connection(config);
    console.log('connection config changed');
    console.log(connection);
    connection.on('error', (event) => {
            console.log('error');
            console.log(event);
    });

    connection.on('connected', (event) => {
        const queue = new Queue(this.connection, {
            name: 'queue_name',
            passive: false,
            durable: true,
            exclusive: false,
            consumer_arguments: { 'x-priority': 1 }
        });

        const exchange = new Exchange(connection, {
            name: 'exchange_name',
            type: 'direct',
            durable: true,
            autoDelete: false,
            internal: false
        });

        queue.bind(exchange, 'queue_name');

        // Receive one message when it arrives
        queue.on('message', (data) => {
                console.log('Single message received');
                console.log(data);
        });

        // Receive all messages send with in a second
        queue.on('messages', (data) => {
            console.log('Multiple messages received');
            console.log(data);
        });
    });
Run Code Online (Sandbox Code Playgroud)

小智 5

我已经能够将 rabbitmq 连接到我的 react-native 应用程序。我设法在 Windows 10 PC 上执行此操作。

第 1 步:如果您安装了适用于 windows 的 rabbitmq,那么您就可以开始使用了,否则,请访问https://www.rabbitmq.com/install-windows.html。访问安装文件中的sbin文件夹(在程序文件下),复制路径,例如 ( C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.4\sbin) 并将其添加到您的环境变量中(转到此电脑/我的电脑,右键单击并选择属性,单击 高级系统设置,选择环境变量,在 系统变量下,突出显示路径并单击编辑,单击新建,然后将复制的路径粘贴进去,然后单击确定. 上述步骤可帮助您在 cmd 上运行 rabbitmq 命令

第 2 步:访问 Roaming 文件夹中的 Rabbitmq 文件夹,

C:\Users\PcName\AppData\Roaming\RabbitMQ
Run Code Online (Sandbox Code Playgroud)

打开enabled_plugins文件并输入以下代码:

[rabbitmq_management].
Run Code Online (Sandbox Code Playgroud)

保存并退出

打开config文件夹并在里面创建一个rabbitmq.config文件,

输入以下代码片段:

[
  {rabbit, [
    {tcp_listeners, [{"127.0.0.1", 5672},
    {"::1",       5672}]}
  ]}
].
Run Code Online (Sandbox Code Playgroud)

保存并关闭文件

第 3 步:访问您的命令行(以管理员身份运行)从命令行的任何位置运行以下命令以设置用户名、密码和管理员权限:

rabbitmqctl add_user dummy dummy
rabbitmqctl set_user_tags dummy administrator
rabbitmqctl set_permissions -p / dummy ".*" ".*" ".*" 
Run Code Online (Sandbox Code Playgroud)

之后运行以启用rabbitmq管理:

rabbitmq-plugins enable rabbitmq_management
Run Code Online (Sandbox Code Playgroud)

运行完成后,运行以下命令:

rabbitmq-server
Run Code Online (Sandbox Code Playgroud)

它应该显示“已完成 n 个插件(其中 n 是一个数字)”

第 4 步:打开您的App.js文件(在您的 react-native 文件夹中)并复制以下代码:

C:\Users\PcName\AppData\Roaming\RabbitMQ
Run Code Online (Sandbox Code Playgroud)

主机 ip (10.0.2.2) 是默认的 android ip(对于那些运行 android 模拟器的人)。

连接代码必须放在 componentWillMount() 函数中,因为它是异步的。

第 5 步:启动您的 android 模拟器并构建您的 react-native 应用程序。android 屏幕上应该没有错误。

第 6 步:通过以下链接在浏览器上访问 rabbitmq 管理:

localhost:15672
Run Code Online (Sandbox Code Playgroud)

使用您的用户名和密码登录( 在这种情况下,用户名:dummy,密码:dummy),您应该在 Connections 下看到一个连接,在 Queues 下看到一个 queue(queue_name)

干杯。