当前位置: 首页 > 知识库问答 >
问题:

Rabbitmq hello world连接仅在本地主机(python)上工作

钮安歌
2023-03-14

下面的代码摘自rabbitmq教程(http://www.rabbitmq.com/tutorials/tutorial-one-python.html)

import pika
import logging

logging.basicConfig()

connection = pika.BlockingConnection(pika.ConnectionParameters(
       host='localhost'))

channel = connection.channel()

channel.queue_declare(queue='hello')

print ' [*] Waiting for messages. To exit press CTRL+C'

def callback(ch, method, properties, body):
    print " [x] Received %r" % (body,)

channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True)

channel.start_consuming()

它可以工作,但如果我用自己的计算机或同一网络中的计算机的ip更改localhost:

connection = pika.BlockingConnection(pika.ConnectionParameters(
       host='192.168.60.126'))
>python rabbitMQReceiver.py
ERROR:pika.adapters.base_connection:Socket Error on fd 316: 10054
Traceback (most recent call last):
  File "rabbitMQReceiver.py", line 7, in <module>
    host='192.168.60.126'))
  File "C:\Python27\lib\site-packages\pika\adapters\base_connection.py", line 61, in __init__
    super(BaseConnection, self).__init__(parameters, on_open_callback)
  File "C:\Python27\lib\site-packages\pika\connection.py", line 513, in __init__
    self._connect()
  File "C:\Python27\lib\site-packages\pika\connection.py", line 804, in _connect
    self._adapter_connect()
  File "C:\Python27\lib\site-packages\pika\adapters\blocking_connection.py", line 146, in _adapter_connect
    self.process_data_events()
  File "C:\Python27\lib\site-packages\pika\adapters\blocking_connection.py", line 88, in process_data_events
    if self._handle_read():
  File "C:\Python27\lib\site-packages\pika\adapters\blocking_connection.py", line 184, in _handle_read
    super(BlockingConnection, self)._handle_read()
  File "C:\Python27\lib\site-packages\pika\adapters\base_connection.py", line 300, in _handle_read
    return self._handle_error(error)
  File "C:\Python27\lib\site-packages\pika\adapters\base_connection.py", line 264, in _handle_error
    self._handle_disconnect()
  File "C:\Python27\lib\site-packages\pika\adapters\blocking_connection.py", line 181, in _handle_disconnect
    self._on_connection_closed(None, True)
  File "C:\Python27\lib\site-packages\pika\adapters\blocking_connection.py", line 235, in _on_connection_closed
    raise exceptions.AMQPConnectionError(*self.closing)
pika.exceptions.AMQPConnectionError: (0, '')

我不知道为什么,我应该在连接中改变一些东西吗?

共有1个答案

倪举
2023-03-14

作为@gas响应的后续。

默认情况下,pika将使用默认的RabbitMQ凭据guest/guest进行连接。如果要使用自己的凭据,则需要提供自己的PlainCredentials对象。

credentials = pika.PlainCredentials(username='my_user', password='password')
connection = \
    pika.BlockingConnection(pika.ConnectionParameters(host='192.168.60.126',
                                                      credentials=credentials))

在服务器上,您需要添加具有适当权限的用户。您可以使用web界面或命令行来完成此操作。更多细节可在@gas提供的链接中获得。

rabbitmqctl add_user my_user password
rabbitmqctl set_permissions -p / my_user ".*" ".*" ".*"

这两个命令将赋予用户my_user对虚拟主机/所需的所有权限。

 类似资料:
  • 问题内容: 我使用Connect编写了一个小型的node.js应用程序,该应用程序提供了一个网页,然后将其定期发送。它还接受用户观察并将其记录到磁盘文件中。 只要我在本地主机上,它就可以正常工作,但是我无法在同一Intranet上让其他计算机看到它。我正在使用端口3000,但是更改为端口8080或80并没有帮助。 这是我用来建立连接的代码: 如上所述,我尝试将端口号更改为8080或80,但没有发现

  • 问题内容: 我正在尝试学习RMI编码,当我运行RMI的服务器端时,连接被拒绝。这是我服务器的主要方法 我相信实现代码无关紧要,因为它只是运行代码的已实现接口。我得到的例外是这个 我究竟做错了什么?客户端和服务器端都将在我的笔记本电脑上运行,因为这只是一个练习。我是否缺少代码或代码有问题?除了给我答案外,请解释为什么会这样,因为我不仅想让它起作用,而是在尝试学习。 **编辑我发现了为什么我的代码无法

  • 问题内容: 由于wamp服务器,我试图将我的android应用程序连接到本地主机url,但它不起作用。我的目标是获取json数据并解析这些数据。对于我的测试,我使用的是设备而不是模拟器,并且使用AndroidManifest.xml中的权限: 我的网址看起来像这样: 我试过了 : 但是到目前为止,它从未起作用: 然后我尝试了在互联网上找到的json url测试:http : //headers.j

  • 我试图连接我的Android应用程序到本地主机网址感谢wamp服务器,但它不工作。我在这里的目标是获取json数据并解析这些数据。对于我的测试,我使用的设备不是仿真器,我使用权限在Androidanifest.xml: 我的url如下所示: 我试过: 但迄今为止,它从未奏效: 然后我尝试了一个在互联网上找到的json url测试:http://headers.jsontest.com/ 它工作得非

  • 问题内容: 我使用MySql.Data 8.08和.NET Core连接到MySql 5.7.18,但引发了以下异常: 怎么处理呢? 问题答案: 从MySql.Data 7.0.7迁移到8.0.8时,我今天遇到了同样的问题。我能够继续在连接字符串中添加“ SslMode = none”。 您将得到类似以下内容的结果: (用数据库详细信息替换值)

  • 我有两个应用程序——基于浏览器的客户端和基于NodeJS的服务器,它们都使用WebSockets进行通信(我使用的是ColyseusJS库)。问题是,当我在本地主机上测试它们时,一切都正常,但当我将应用程序部署到我的Ubuntu VPS服务器时,它停止工作。 我在尝试连接时在浏览器中收到的消息是: 所以它到达服务器(因为当服务器被禁用时,消息是“连接建立中的错误:净::ERR_CONNECTION