我有三台PC,其中两台PC是生产商,一台是消费者。使用Python,我如何让它们相互通信。我能够在localhost上做同样的事情,我按照RabbitMQ网站上的教程进行操作。他们在那里提到我所要做的就是添加IP地址而不是localhost,但这并不起作用。请帮忙。
修改
我对我的代码进行了以下更改,以使用pika验证用户名和密码。我仍然遇到错误
receive.py的代码如下:
import pika
credentials = pika.PlainCredentials('sneha', 'sneha')
connection = pika.BlockingConnection(pika.ConnectionParameters('rabbit@sneha-System-Product-Name', 5672, '/', credentials))
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
channel.basic_consume(callback,
queue='hello',
no_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
我收到以下错误:
Traceback (most recent call last):
File "receive.py", line 4, in <module>
connection = pika.BlockingConnection(pika.ConnectionParameters('rabbit@sneha-System-Product-Name', 5672, '/', credentials))
File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 339, in __init__
self._process_io_for_connection_setup()
File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 374, in _process_io_for_connection_setup
self._open_error_result.is_ready)
File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 395, in _flush_output
raise exceptions.ConnectionClosed()
pika.exceptions.ConnectionClosed
答案 0 :(得分:0)
教程使用guest
RabbitMQ用户帐户,该帐户在全新安装时自动创建并具有所有权限。但是,this account is restricted to connections from localhost
only是故意的:因为它具有无限的权限,所以默认安装会引起安全问题。这个帐户适合玩RabbitMQ但不适合生产使用。
因此,在远程计算机上使用RabbitMQ时,它会拒绝与guest
帐户的连接,并且您会收到ProbableAuthenticationError
错误。
现在,您有两个解决方案:
建议的是创建另一个用户,为其提供适当的权限并将其用于您的应用程序。这在Access Control documentation。
禁用guest
帐户中的“仅限本地主机”保护。为此,您需要使用以下RabbitMQ配置:
[
{rabbit, [
{loopback_users, []}
]}
].
请阅读documentation of loopback_users
(您必须在此页面中搜索loopback_users
)。