当前位置: 首页 > article >正文

RabbitMQ 安装(Windows版本)和使用

安装

安装包获取

可以自己找资源,我这里也有百度云的资源,如果没失效的话可以直接用。

通过百度网盘分享的文件:RabbitMQ
链接:https://pan.baidu.com/s/1rzcdeTIYQ4BqzHLDSwCgyw?pwd=fj79 
提取码:fj79 
 

安装教程可参考:消息队列RabbitMQ在Windows中安装与配置完全解析_rabbitmq windows-CSDN博客

主要就是安装和设置环境变量,安装的时候版本对应上就可以了。

插件安装

安装插件后就可以后续进入到 web 的管理界面

rabbitmq-plugins.bat enable rabbitmq_management

启动服务

rabbitmq-service start

界面操作

http://127.0.0.1:15672/

用户名密码默认都是 guest

登录到界面,就可以看到队列的整体情况了。

还可以在界面上进行新增队列等操作

pika使用

可使用 python 的第三方包 pika 连接使用 rabbitmq 进行消息队列的发送和接收,示例如下。

我下面的示例使用的是 pika==0.13.1,所以先安装包 pip install pika==0.13.1

server.py

import json

import pika

# 无密码
# connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))

# 有密码
credentials = pika.PlainCredentials("guest", "guest")
connection = pika.BlockingConnection(pika.ConnectionParameters(
    host='127.0.0.1',
    port=5672,
    virtual_host='/',
    credentials=credentials))

channel = connection.channel()

# 创建一个队列
channel.queue_declare(queue='hello')

# 发送数据
for i in range(5):
    value = f"Hello world! {i}"
    print(f"Sent '{value}'")
    msg = {"key": value}
    body = json.dumps(msg)
    # 同一条消息同时往多个队列发送
    channel.basic_publish(exchange='',
                          routing_key='hello',  # 消息队列名称
                          body=body)  # 发送的数据
    channel.basic_publish(exchange='',
                          routing_key='test_queue',  # 消息队列名称
                          body=body)  # 发送的数据

connection.close()

client.py

import json

import pika

credentials = pika.PlainCredentials('guest', 'guest')  # rabbit用户名和密码
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1', port=5672, virtual_host='/', credentials=credentials))
channel = connection.channel()

channel.queue_declare(queue='hello')


# 3.确定回调函数
def callback(ch, method, properties, body):
    print("Received %r" % body)
    # 手动应答
    s = body.decode('utf-8')  # 将 bytes 转换为字符串
    data = json.loads(s)
    print(data)


# 4.确定监听队列参数
channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True)

print('Waiting for messages. To exit press CTRL+C')

# 5.正式监听
channel.start_consuming()

报错解决

如果报错:

AttributeError: module 'collections' has no attribute 'Callable'

将报错行的 collections.Callable 修改为 collections.abc.Callable 即可。

这个报错一般是 python 的版本太高导致。


http://www.kler.cn/a/369939.html

相关文章:

  • 数据缺失补全方法综述
  • 【Elasticsearch】腾讯云安装Elasticsearch
  • MECD+: 视频推理中事件级因果图推理--VLM长视频因果推理
  • 网络安全等级保护基本要求——等保二级
  • Docker网段和服务器ip冲突导致无法访问网络的解决方法
  • 论文笔记(六十二)Diffusion Reward Learning Rewards via Conditional Video Diffusion
  • Multimodal Embed 3:为人工智能搜索提供动力
  • 排查PHP服务器CPU占用率高的问题
  • Elasticsearch如何搜索日志并存储
  • mHand Pro动捕手套创新升级,正式发布!
  • [LeetCode] 814. 二叉树剪枝
  • windows命令汇总
  • 【Python爬虫实战】深入解析 Selenium:从元素定位到节点交互的完整自动化指南
  • tensorflow中 tf.concat 和直接相加+区别
  • 从JDK 17 到 JDK 21:Java 新特性
  • Java异常处理:最佳实践与深度解析
  • 计算机的错误计算(一百三十七)
  • 理解HTTP、HTTPS、TCP、UDP与OSI七层模型:网络访问的基础
  • Android TelephonyManager 参数定义和功能 API 介绍
  • C语言——网络编程(下)
  • Docker:容器化的革命
  • VUE组件学习 | 五、v-for组件
  • 明达云平台:赋能污水处理厂
  • STM32中的IPR,IRQ,NVCC ,EXTI,AFIO 都是什么意思?
  • elselect iphone上 要点两次
  • ES(2)(仅供自己参考)