zoukankan      html  css  js  c++  java
  • RabbitMQ(六)远程连接

    RabbitMQ(六)远程连接

    默认情况下,rabbitmq使用`guest`来连接本地(localhost)的server,当需要远程连接时,就会失效。

    "guest" user can only connect via localhost

    如果必须使用`guest`用户来进行远程登录,需要修改配置
    [{rabbit, [{loopback_users, []}]}].

    (1)那么首先需要创建并添加一个用户`test`,让其具有管理员权限

    rabbitmqctl add_user rootroot 
    rabbitmqctl set_user_tags rootadministrator 
    rabbitmqctl set_permissions -p / root".*" ".*" ".*"

    (2)修改配置文件

    [{rabbit, [{loopback_users, ["root"]}]}].

    (3)重启rabbitmq-server

    /etc/init.d/rabbitmq-server restart

    (4)修改host

    修改远程客户端机器上的/etc/hosts,添加rabbit-server的IP
    xx.xx.xx.xx rabbit-server

    (5)认证

    pika提供了两种认证方式:ConnectinParameters和URLParameters。

    ConnectionParameters

    import pika
    
    # Set the connection parameters to connect to rabbit-server1 on port 5672# on the / virtual host using the username "guest" and password "guest"
    credentials = pika.PlainCredentials('root', 'root')
    parameters = pika.ConnectionParameters('rabbit-server1',
                                           5672,
                                           '/',
                                           credentials)

    URLParameters

    import pika
    
    # Set the connection parameters to connect to rabbit-server1 on port 5672# on the / virtual host using the username "guest" and password "guest"
    parameters = pika.URLParameters('amqp://guest:guest@rabbit-server1:5672/%2F')

    例子

    import pika
    
    i = 1
    
    def callback(ch, method, properties, body):
        global i
        #print 'receive %r'%body
        print 'receive %s'%i
        i += 1
        f = open('%s'%i, 'w+')
        f.write(body)
        f.close()
    
    #第一种方法
    #credentials = pika.PlainCredentials('mtest', 'root')
    #connection = pika.BlockingConnection(pika.ConnectionParameters('rabbit-server', 5672, '/', credentials))
    #第二种方法
    parameters = pika.URLParameters('amqp://mtest:root@rabbit-server:5672/%2F')
    connection = pika.BlockingConnection(parameters)
    
    channel = connection.channel()
    
    channel.queue_declare(queue='hello')
    
    channel.basic_consume(callback, queue='hello1', no_ack=True)
    
    channel.start_consuming()      
  • 相关阅读:
    ARC管理内存(一)
    懒加载lazyload
    View的封装
    Plist文件与数据解析
    ubuntu16.04 安装python3.6
    ubuntu16.04 安装 wxPython方法
    第三章
    第二章
    协方差的意义
    内存区--Java
  • 原文地址:https://www.cnblogs.com/coder2012/p/4457381.html
Copyright © 2011-2022 走看看