常见应用场景
- 实时数据处理:消息队列接收大量异步数据,Socket将处理后的数据实时推送给前端,如实时监控系统,传感器数据先进入消息队列,经处理后通过Socket推送给展示端。
- 分布式系统通信:在分布式架构中,不同服务间通过消息队列解耦,Socket用于服务与客户端实时交互。例如在线游戏,游戏服务器通过消息队列处理玩家请求,通过Socket与玩家客户端保持实时连接。
- 异步任务分发与实时反馈:任务放入消息队列异步处理,处理结果通过Socket实时返回给请求方。如文件处理服务,文件处理任务入队,处理完成后通过Socket告知客户端。
Python示例代码框架
import socket
import pika # RabbitMQ的Python客户端
# 初始化Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(1)
# 初始化RabbitMQ连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='my_queue')
def callback(ch, method, properties, body):
# 接收到消息队列数据后,通过Socket发送给客户端
client_socket, addr = server_socket.accept()
client_socket.sendall(body)
client_socket.close()
channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)
try:
channel.start_consuming()
except KeyboardInterrupt:
channel.stop_consuming()
connection.close()
server_socket.close()