我在虚拟机上使用无业游民设置了服务器。安装rabbitmq之后,我尝试使用VM外部的脚本连接到它。 VM上已经运行了Django和RabbitMQ。运行脚本后,我有一个例外:
pika.exceptions.IncompatibleProtocolError:StreamLostError:('运输注明为EOF',)
如何解决我的问题?
我的朋友已经在raspberryPi上使用了下面提供的代码,该代码实际上设法执行了它。我在PC上所做的唯一更改是将主机名从指定的IP更改为“ 127.0.0.1”,并添加了端口号。
rstantools
错误消息:
import pika
import sys
import random
import time
#from nos import dokonaj_pomiar
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)
答案 0 :(得分:2)
@Pigeonnn 在 his own comment 中为他自己的问题提供了对这篇帖子的原始问题的答案:
<块引用>其实我刚刚找到了一个解决方案。问题是如果你想 听rabbitmq你需要通过端口5672连接 - 而不是15672。 更改端口,转发,一切正常:)
答案 1 :(得分:0)
首先在 vagrant 配置文件(Vagrantfile)中将主机端口转发到 Vagrant 上的访客端口。请注意不要使用已使用的主机端口。
#include <boost/preprocessor.hpp>
#define ENUM_FIELD(I,_,F) F,
#define ENUM_OUTPUT_CASE(I,N,F) case N::F: os << BOOST_PP_STRINGIZE(F); break;
#define ENUM(N, T, ARGS) \
enum class N : T {\
BOOST_PP_SEQ_FOR_EACH(ENUM_FIELD,N,ARGS)\
};\
std::ostream &operator <<(std::ostream &os, const N val) {\
switch (val) {\
BOOST_PP_SEQ_FOR_EACH(ENUM_OUTPUT_CASE,N,ARGS)\
}\
\
os << '(' << static_cast<int>(val) << ')';\
return os;\
}
ENUM(Weekdays, unsigned char, (Monday)(Tuesday)(Wednesday)(Thursday)(Friday)(Saturday)(Sunday))
然后像这样连接:
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 5672, host: 5671 # Rabbit
end
不要忘记相应地配置用户管理员。