User-Profile-Image
hankin
  • 5
  • centos7
  • docker
  • mysql
  • PostgreSQL
  • git/gitlab
  • ELK
  • python
    • python-Tornado
    • python-django
  • redis
  • nginx
  • kvm
  • proxmox
  • mongo
  • kubernetes
  • prometheus
  • GlusterFs
  • nfs
  • freeswitch
  • httpd
  • shell脚本
  • linux
  • fastdfs
  • nextcloud
  • openssl
  • openvpn
  • rabbitmq
  • sqlite
  • svn
  • java
  • ubuntu
  • vue2
  • wordpress
  • php
  • IOT物联网
  • 项目
  • 故障处理
  • 树莓派
  • 博客存档
  • 未分类
  • 杂项
  • #1742(无标题)
  • 新视野
  • 分类
    • 项目
    • 树莓派
    • 杂项
    • 未分类
    • 新视野
    • 故障处理
    • 博客存档
    • 交换机
    • wordpress
    • vue2
    • ubuntu
    • svn
    • sqlite
    • shell脚本
    • redis
    • rabbitmq
    • python-django
    • python
    • proxmox
    • prometheus
    • PostgreSQL
    • php
    • openvpn
    • openssl
    • nginx
    • nfs
    • nextcloud
    • mysql
    • mongo
    • linux
    • kvm
    • kubernetes
    • java
    • IOT物联网
    • httpd
    • GlusterFs
    • git/gitlab
    • freeswitch
    • fastdfs
    • ELK
    • docker
    • centos7
  • 页面
    • #1742(无标题)
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
    首页   ›   rabbitmq   ›   正文
rabbitmq

rabbitmq简单搭建并测试

2022-10-28 23:33:39
849  0 0

简单搭建并测试rabbitmq

使用容器搭建
docker pull rabbitmq
docker run -id --hostname myrabbit --name rabbitmq1 -p 15672:15672 -p 5672:5672 rabbitmq
    15672用于页面访问使用
    5672用于生产和消费端使用(代码用)
进入容器下载插件,开启管理功能
docker exec -it rabbitmq /bin/bssh 
  运行:rabbitmq-plugins enable rabbitmq_management
浏览器访问
登录管理页面:http://ip:15672
添加用户
删除guest用户
python代码测试
1生产者代码

import pika
import time

#传入数据到队列
def test_in(message):
 #1 连接rabitmq服务器
    user = pika.PlainCredentials('xx','xx') #账号 密码
    connection=pika.BlockingConnection(pika.ConnectionParameters('192.168.2.199', credentials = user,virtual_host='myvhost1'))
        #virtual_host = 'myvhost1' 自定义的vhost 默认使用/时不需要指定

    channel=connection.channel()

 #2、创建一个队列
    channel.queue_declare(queue='iid', durable = True)
    # 声明队列,不存在则创建,存在则连接.
    # queue:队列名 ,durable:是否持久化

    #q = channel.queue_declare(queue='iid', durable=True)
    #print(q.method.message_count) # 获取队列长度

    channel.basic_publish(exchange='',
                          #exchange为空就使用默认的交换机
                          routing_key='iid',
                          # 队列名
                          body=message,
                          # 需要存储的数据
                          properties=pika.BasicProperties(delivery_mode=2))
                          ## 持久化队列.delivery_mode参数控制消息是否持久化, delivery_mode = 2表示消息持久化
    print("发送:‘{}’到MQ成功".format(message))
    connection.close()


while True:
    test_in("mq-" + str(time.time()))
    time.sleep(1)
2消费者代码
### 从队列获取数据
import pika
import time

# 1、连接rabbitmq服务器
credentials = pika.PlainCredentials('xx', 'xx')  # 账号 密码
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.2.199', credentials=credentials, virtual_host='myvhost1'))
    # virtual_host = 'myvhost1' 自定义的vhost 默认使用/时不需要指定
channel = connection.channel()

q = channel.queue_declare(queue='iid', durable=True)
print(q.method.message_count)
#print(channel.basic_get(queue='iid'))


# 一旦有消息就执行该回调函数(比如减库存操作就在这里面)
def execrun(ch, method, properties, body):
    getbody = body.decode()
    print(getbody)
    print("-")

    time.sleep(0.3)
    # 数据处理完成,MQ收到这个应答就会删除消息
    ch.basic_ack(delivery_tag=method.delivery_tag)


# 消费者这边监听的队列是image,一旦有值出现,则触发回调函数:callback
channel.basic_consume(queue='iid',
                      auto_ack=False,  # 默认就是False,手动应答
                      on_message_callback=execrun,
                      )

print('当前MQ简单模式正在等待生产者往消息队列塞消息.......要退出请按 CTRL+C.......')
# 开始接收(将数据放入回调函数开始执行)
channel.start_consuming()
评论 (0)

点击这里取消回复。

欢迎您 游客  

Copyright © 2025 网站备案号 : 蜀ICP备2022017747号
smarty_hankin 主题. Designed by hankin
主页
页面
  • #1742(无标题)
博主
tang.show
tang.show 管理员
linux、centos、docker 、k8s、mysql等技术相关的总结文档
213 文章 2 评论 201587 浏览
测试
测试