rabbitmq 如何连接到流浪者主机上的兔子?

vc9ivgsu  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(3)|浏览(185)

我在一个虚拟机上用vagrant设置了一个服务器。安装了rabbitmq之后,我尝试用VM外的脚本连接它。VM上已经有Django和RabbitMQ在运行了。运行脚本之后,我遇到了一个异常:

pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport indicated EOF',)

如何解决我的问题?
我的朋友已经在raspberryPi上使用了下面提供的代码,它实际上设法执行了它。我在PC上唯一改变的是主机名从指定的IP改为我的“127.0.0.1”,我添加了端口号。

import pika
import sys
import random
import time

credentials = pika.PlainCredentials(username='admin', password='admin')
connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1',port=15672,credentials=credentials))

channel = connection.channel()
channel.queue_declare(queue='hello',durable=True)

错误消息:

$ python send.py
Traceback (most recent call last):
  File "send.py", line 8, in <module>
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1',port=15672,credentials=credentials))
  File "C:\Users\Pigeonnn\AppData\Local\Programs\Python\Python37\lib\site-packages\pika\adapters\blocking_connection.py", line 360, in __init__
    self._impl = self._create_connection(parameters, _impl_class)
  File "C:\Users\Pigeonnn\AppData\Local\Programs\Python\Python37\lib\site-packages\pika\adapters\blocking_connection.py", line 451, in _create_connection
    raise self._reap_last_connection_workflow_error(error)
pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport indicated EOF',)
beq87vna

beq87vna1#

@Pigeonnn在他自己的评论中提供了自己问题的答案,对这个帖子的原始问题:
事实上,我刚刚找到了一个解决方案。问题是,如果你想听rabbitmq,你需要通过端口5672连接--而不是15672。更改端口,转发,一切正常:)

yvt65v4c

yvt65v4c2#

陈述文档并突出显示响应,RabbitMQ侦听端口包括:

AMQP:       5672
AMQP/ssl:   5671
HTTP management UI: 15672
pieyvz9o

pieyvz9o3#

首先将主机端口转发到Vagrant配置文件(Vagrantfile)中的Vagrant上的访客端口。注意不要使用已使用的主机端口。

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 5672, host: 5671  # Rabbit
end

然后按如下方式连接:

credentials = pika.PlainCredentials(username='admin', password='admin')
connection = pika.BlockingConnection(pika.ConnectionParameters(host='127.0.0.1',port=5671,credentials=credentials))

请不要忘记相应地配置用户admin。

相关问题