• 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()      
  • 相关阅读:
    学习淘宝指数有感
    STL学习小结
    Java里泛型有什么作用
    android 内存泄漏分析技巧
    学道1.3
    严苛模式(StrictMode)
    年龄大了还能够学习编程吗
    ORACLE EXP命令
    数学之路-python计算实战(13)-机器视觉-图像增强
    《C语言编写 学生成绩管理系统》
  • 原文地址:https://www.cnblogs.com/coder2012/p/4457381.html
Copyright © 2020-2023  润新知