zoukankan      html  css  js  c++  java
  • centos7安装rabbitmq并简单使用

    先安装erlang

    rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm

    安装rabbitmq-server

    rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm

    查看rabbitmq-server有没有安装成功,能查到说明安装成功了

    rpm -qa|grep rabbitmq

    开启rabbit-server

    service rabbitmq-server start

    关闭服务

    service rabbitmq-server stop

    查看rabbit-server当前状态

    rabbitmqctl status

    安装好后

    rabbitmq list_queues显示当前的队列列表

    远程连接rabbitmq server的话,需要配置权限
    首先在rabbitmq server上创建一个用户
    sudo rabbitmqctl add_user yu yuhaha
    同时还要配置权限,允许从外面访问(下面的命令相当于创建了一个管理员)
    sudo rabbitmqctl set_permissions -p / yu ".*" ".*" ".*"

    producer.py

     1 #!/usr/bin/env python
     2 # coding:utf8
     3 # author:Z time:2019/1/11
     4 import pika
     5 
     6 #建立连接
     7 #指定用户名
     8 credentials=pika.PlainCredentials('yu','yuhaha')
     9 parameters=pika.ConnectionParameters(host='192.168.1.103',credentials=credentials)
    10 connection = pika.BlockingConnection(parameters)
    11 channel = connection.channel()#队列连接通道
    12 
    13 # 声明queue
    14 channel.queue_declare(queue='hello2')
    15 
    16 # n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
    17 channel.basic_publish(exchange='',#消息过滤,为空表示默认
    18                       routing_key='hello2',#路由,实际消息放到哪个队列由这个参数控制
    19                       body='Hello World!2')#消息内容
    20 print(" [x] Sent 'Hello World!'")
    21 connection.close()

    执行两次程序后,再次执行命令rabbitmq list_queues

    consumer.py

     1 #!/usr/bin/env python
     2 # coding:utf8
     3 # author:Z time:2019/1/11
     4 import pika
     5 
     6 credentials=pika.PlainCredentials('yu','yuhaha')
     7 paramters=pika.ConnectionParameters(host='192.168.1.103',credentials=credentials)
     8 connection = pika.BlockingConnection(paramters)
     9 channel = connection.channel()#队列连接通道
    10 
    11 
    12 def callback(ch, method, properties, body):#队列连接通道,请求方法,消息参数,消息内容
    13     print(" [x] Received %r" % body)
    14 
    15 
    16 channel.basic_consume(callback,#取到消息后,调用callback函数
    17                       queue='hello',
    18                       no_ack=True)
    19 
    20 print(' [*] Waiting for messages. To exit press CTRL+C')
    21 channel.start_consuming()#开始消费,阻塞模式,没消息一直等,有消息就收,收完了继续等,是处于永远运行的状态

     运行consumer.py,成功取到两条消息

  • 相关阅读:
    spring-boot、spring-data-jpa整合
    Executors中的几种线程调用方式
    通过BeanFactoryPostProcessor来获取bean
    spring、spring-data-redis整合使用
    java.io几种读写文件的方式
    springmvc+quartz简单实现定时调度
    httpclient跳过https请求的验证
    Gson的几种使用方式
    httpclient的几种请求URL的方式
    【转】文件各种上传,离不开的表单
  • 原文地址:https://www.cnblogs.com/z-x-y/p/10256466.html
Copyright © 2011-2022 走看看