zoukankan      html  css  js  c++  java
  • RabbitMQ 实现实现基本通信及订单处理

    ------------恢复内容开始------------

      一.基本使用 》》》 依据官方文档

      (1)生产端

    # python 操作我们rabbitMq 需要的模块 pika
    # pip install pika
    import pika
    
    # 建立和RabbitMQ的链接
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    
    # 通过句柄
    channel = connection.channel()
    
    # 声明消息队列
    channel.queue_declare(queue = 'hello')
    
    # body 一个内容体 往队列中进行发消息
    channel.basic_publish(exchange='',
                          routing_key='hello',
                          body='Hello World!')
    
    print("[x]发送'Hello World!'")
    
    # 关闭
    connection.close()

      (2)消费端

    # 取消息
    import pika
    # 建立和RabbitMQ的链接
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    
    
    # 通过句柄
    channel = connection.channel()
    
    # 确认我们的queue的是存在的
    channel.queue_declare(queue='hello')
    
    
    # 申明回调函数
    def callback(ch, method, properties, body):
        print(" [x] Received %r" % body)
    
    # 从Q 中取消息
    channel.basic_consume(queue='hello',
                          auto_ack=True,
                          on_message_callback=callback)
    
    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()  # 开始消费

      (3)执行

       窗口一 放信息

       窗口二  收消息

      二.redis的高级部分

       

      (1)linux 命令行实现安装和启动

      #下载

    wget http://download.redis.io/releases/redis-5.0.7.tar.gz

      # 解压 

    tar -zxvf redis-5.0.7.tar.gz

      # 建立软连接

      

    ln -s redis-5.0.7 redis

      # 相关信息
      

    cd redis
    make&&make install
    #在src目录下可以看到
    #redis-server--->redis服务器
    #redis-cli---》redis命令行客户端
    #redis-benchmark---》redis性能测试工具
    #redis-check-aof--->aof文件修复工具
    #redis-check-dump---》rdb文件检查工具
    #redis-sentinel---》sentinel服务器,哨兵
    #redis作者对windows维护不好,window自己有安装包

      (2)三种命令行启动方式

        1.最简单的启动

        

    redis-server

        相关的参数命令

    ps -ef|grep redis  #查看进程
    netstat -antpl|grep redis #查看端口
    redis-cli -h ip -p port ping #命令查看

      2.动态参数启动

    #动态参数启动
    redis-server --port 6380 #启动,监听6380端口

      3.vim  redis_6379.conf进行配置文件启动

      (1)配置

    daemonize no #是否以守护进程启动 一般是改为yes 开启进行守护
    pidfile /var/run/redis.pid   #进程号的位置,删除
    port 6379    #端口号
    dir "opt/soft/redis/data"  #工作目录   》》》 事先要进行文件存放的目录
    logfile “6379.log” #日志位置  

      (2)启动命令

      

    # 一般启动redis服务 redis-sever redis_6379.conf 启动配置文件即可
    
    # 因为环境没有配置的原因
    ./src/redis-server redis_6379.conf

      # 查看进程号

    #查看进程
    ps -ef |grep redis-server |grep 6379
    #查看日志
    cd data 
    cat 6379.log

      

      ####客户端连接###

    redis-cli -h 127.0.0.1 -p 6379
    ping #返回PONG

    `    

      (2)应用场景

    ### 1.4 Redis典型使用场景
    
    缓存系统:
    
    计数器:网站访问量,转发量,评论数
    
    消息队列:发布订阅,阻塞队列实现
    
    排行榜:有序集合
    
    社交网络:很多特性跟社交网络匹配,粉丝数,关注数
    
    实时系统:垃圾邮件处理系统,布隆过滤器

      三. 一主多从

      查询进行id

      

      ps -ef |grep redis-server

      配置:文件

      复制一份配置文件

      cp redis_6379.conf redis_6378.conf

    daemonize yes
    bind 0.0.0.0  # 127.0.0.1 只能连接本地 这样既可以进行外部redis连接
    pidfile /var/run/redis.pid
    port 6378  # 端口号
    dir "/root/data"  # 数据存储文件
    logfile "6378.log"  # 日志文件

         # 一主多重 切换redis 服务器

       cd redis

      ./src/redis-cli -p 6378

      (1)方式一:slave 执行主从命令

      

    6378是从,6379是主
    
    在6378上执行
    
    slaveof 127.0.0.1 6379 #异步
    slaveof no one #取消复制,不会把之前的数据清除

      ./src/redis-cli -p 6379 写数据

     # 客户端主是6379 负责写数据  从客户端6378负责读取数据

    (2)文件的配置方式二:

      # 在redis 服务端文件vim 进行配置

      

    slaveof ip port #配置从节点ip和端口
    slave-read-only yes #从节点只读,因为可读可写,数据会乱

      配置  :从连接主

    daemonize yes
    bind 0.0.0.0
    pidfile /var/run/redis.pid
    port 6378
    dir "/root/data"
    logfile "6378.log"
    slaveof 127.0.0.1 6379
    slave-read-only yes

     (3)解决主从复制  万一主挂了的问题  》》》 利用哨兵 高可用的方法进行 解决:起一个sentinel 进行 进行监听 主服务器的情况 

      

    port 26379
    daemonize yes
    dir /data
    protected-mode no
    bind 0.0.0.0
    logfile "redis_sentinel.log"
    sentinel monitor mymaster 10.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 180000

      启动哨兵

      redis-sentinel sentinel.conf

    python链接

    import redis
    from redis.sentinel import Sentinel
    
    # 连接哨兵服务器(主机名也可以用域名)
    # 10.0.0.101:26379
    sentinel = Sentinel([('10.0.0.101', 26379),
                         ('10.0.0.101', 26378),
                         ('10.0.0.101', 26377)
                 ],
                        socket_timeout=5)
    
    
    print(sentinel)
    # 获取主服务器地址
    master = sentinel.discover_master('mymaster')
    print(master)
    
    
    
    
    # 获取从服务器地址
    slave = sentinel.discover_slaves('mymaster')
    print(slave)
    
    
    
    
    # 获取主服务器进行写入
    # master = sentinel.master_for('mymaster', socket_timeout=0.5)
    # w_ret = master.set('foo', 'bar')
    #
    #
    #
    #
    # slave = sentinel.slave_for('mymaster', socket_timeout=0.5)
    # r_ret = slave.get('foo')
    # print(r_ret)


      

  • 相关阅读:
    redis官方网站及文档
    kafka 官网帮助文档
    elasticsearch 官方入门 及 API
    解决Maven出现Plugin execution not covered by lifecycle configuration 错误
    linux下scp用法
    Spring AOP 实现原理
    深入浅出spring IOC中三种依赖注入方式
    Servlet API 中文版
    【转】httpservlet 文章
    jsp request 对象详解
  • 原文地址:https://www.cnblogs.com/mofujin/p/12103294.html
Copyright © 2011-2022 走看看