准备 1、python需要安装stomp,stomp包的安装比较麻烦,建议在网上直接下载.whl文件,然后本地安装 2、本机需要安装acitvemq,安装过程参考[https://blog.csdn.net/weixin_41806489/article/details/104997519] (https://www.csdn.net/). 注意: 一般用python是通过stomp协议进行通讯 操作过程 1、生产方 prublishi.py import time import sys import os import stomp import time import sys import 在本文中,我们将深入探讨如何使用Python操作ActiveMQ,一个流行的开源消息代理和消息中间件。ActiveMQ允许应用程序之间高效地交换数据,而Python通过STOMP(Simple Text Oriented Message Protocol)协议与ActiveMQ进行通信。 我们需要为Python环境安装`stomp.py`库,这是一个用于Python的STOMP客户端。由于安装过程可能复杂,建议直接从网络上下载`.whl`文件,然后在本地执行安装。这将使Python能够支持与ActiveMQ的交互。 接下来,确保在你的机器上已经安装了ActiveMQ。你可以参考链接中的教程进行安装:[https://blog.csdn.net/weixin_41806489/article/details/104997519](https://www.csdn.net/)。ActiveMQ是Apache软件基金会的项目,它实现了多种消息协议,包括STOMP,使得多种语言的客户端可以方便地与其通信。 **生产者(Publisher)** 在Python中创建生产者主要是发送消息到ActiveMQ。以下是一个简单的`publish.py`示例: ```python import time import sys import os import stomp # 获取环境变量或设置默认值 user = os.getenv("ACTIVEMQ_USER") or "admin" password = os.getenv("ACTIVEMQ_PASSWORD") or "password" host = os.getenv("ACTIVEMQ_HOST") or "localhost" port = os.getenv("ACTIVEMQ_PORT") or 61613 dest = "test" messages = 10000 data = "test from BeijingJiaotong" # 创建连接 conn = stomp.Connection([(host, port)]) # 连接ActiveMQ conn.connect(login=user, passcode=password) # 循环发送消息 for i in range(0, messages): conn.send(body=str(i), destination=dest, persistent='false') # 断开连接 conn.disconnect() ``` 这个脚本定义了一个连接到ActiveMQ服务器的STOMP客户端,并向目的地`test`发送`messages`数量的消息。消息体可以是任何字符串,如`data`变量所示。`persistent='false'`表示消息不会持久化,如果服务器重启,这些消息可能会丢失。 **消费者(Consumer)** 对于消费者,我们有`listener.py`,它接收并处理从ActiveMQ发送过来的消息: ```python import sys import os import stomp user = "admin" password = "admin" host = "127.0.0.1" port = 61613 dest = "test" destination = sys.argv[1:2] or ["/topic/event"] class MyListener(stomp.ConnectionListener): def __init__(self, conn): self.conn = conn self.count = 0 self.start = time.time() def on_error(self, headers, message): print(f'received an error: {message}') def on_message(self, headers, message): if message == "SHUTDOWN": self.conn.disconnect() sys.exit(0) else: print(message) # 创建连接 conn = stomp.Connection([(host, port)]) conn.set_listener('', MyListener(conn)) # 连接并订阅 conn.connect(login=user, passcode=password) conn.subscribe(destination=dest, ack='auto', id="") print("Waiting for messages...") while True: time.sleep(10) ``` 这个脚本创建了一个监听器类`MyListener`,它实现了`on_message`和`on_error`回调函数。当收到消息时,`on_message`会打印出消息内容,如果接收到"SHUTDOWN"消息,它将断开连接并退出程序。消费者通过调用`subscribe`方法订阅指定的主题或队列,这里订阅的是`dest`。 总结起来,Python通过`stomp.py`库与ActiveMQ进行交互,允许你创建消息的生产者和消费者。在生产者中,我们发送消息到指定的目的地;在消费者中,我们监听特定主题或队列,接收并处理来自ActiveMQ的消息。这种模型在分布式系统中非常有用,因为它允许不同组件异步通信,提高系统的可扩展性和容错性。
- 粉丝: 5
- 资源: 908
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 健身房预约课程小程序源码
- 后端程序员应该具备哪些知识储备
- vs自带的Depends工具
- 微信小程序源码-健身房私教预约系统-服务端-毕业设计源码-期末大作业.zip
- 基于Python的电影数据爬取与数据可视化的项目源码+文档(高分完整项目)
- 基于单片机的密码锁设计.doc
- 基于Comsol软件的激光熔覆熔池流动数值模拟,考虑马兰戈尼对流,表面张力,重力,浮力等熔池驱动力,并且考虑S活性元素,使得表面张力系数在某一温度由正向负的转变,即马兰戈尼对流方向的改变导致表面行成凸
- 97.基于单片机的指纹门禁设计.docx
- 小米su7微博文本数据.zip
- MATLAB神经网络30个案例分析
- 基于Comsol软件的激光熔覆熔池流动数值模拟,考虑马兰戈尼对流,表面张力,重力,浮力等熔池驱动力,并且考虑S活性元素,使得表面张力系数在某一温度由正向负的转变,即马兰戈尼对流方向的改变导致表面行成凸
- Matlab智能算法30个案例源代码
- 一款适合Win10的depends工具
- 粒子群算法解决TSP问题
- 步进电机控制,个人学习整理,仅供参考
- Matlab 基于光流场的交通流量分析与应用 基于光流场的运动目标检测 光流法 HS光流法 Matlab程序 可以检测任意车流 人流视频 可以检测任何运动目标视频