繁体   English   中英

Python Pika和RabbitMQ连接发布

[英]Python Pika and RabbitMQ Connecting to Publish

尝试使用Python将数据发送到RabbitMQ队列。

我没有配置服务器,但它正在运行其他进程。 我有一个工作登录,可以毫无问题地访问Web输出。

RabbitMQ的示例代码为python使用Pika:

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='xxx.xxx.xxx.xxx:xxxxx'))
channel = connection.channel()

channel.queue_declare(queue='Test')

channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()

这运行并踢我:

pika.exceptions.ConnectionClosed

不是很多,但安全的假设是登录问题,因为示例代码没有任何登录信息。

所以我添加了它。

import pika
import sys
try:

    credentials = pika.PlainCredentials('username', 'password')


    connection = pika.BlockingConnection(pika.ConnectionParameters('xxx.xxx.xxx.xxx',
                                           xxxxx,
                                           'virtualhostnamehere',
                                           credentials,))

    channel = connection.channel()
    channel.queue_declare(queue='Test')

    channel.basic_publish(exchange='amq.direct',
                          body='Hello World!')
    print(" [x] Sent 'Hello World!'")
except:
    e = sys.exc_info()[0]
    print e

在给我之前,似乎好几分钟就到处闲逛:

<class 'pika.exceptions.IncompatibleProtocolError'>

服务器正在运行其他服务,但我似乎无法确定我做错了什么。

登录是正确的。 vhost名称是正确的。 主人是对的。 交换名称是正确的。

会欣赏正确方向的一点。

更新:

我也尝试过使用URLParameters并获得相同的结果。

parameters = pika.URLParameters('amqp://username:password@xxx.xxx.xxx.xxx:xxxxx/notmyvhostname')
connection = pika.BlockingConnection(parameters)

但我想这个端口不会改变任何东西。 这是端口15672,登录与我以前浏览器输出相同。

使用端口5672 - 或您为AMQP侦听器设置的默认端口。 端口15672用于Web UI访问,通过HTTP完成,因此不兼容的协议错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM