我正在尝试构建一个系统,我可以根据他们对某些事件的订阅向不同用户发送消息。基本上我有一个api,它给我直播活动。一些用户将订阅这些活动。我的任务是在发生此类事件时向这些用户发送消息。我正在尝试用Python设计系统。
目前我有以下问题。
我正在考虑使用Amazon SNS。但对整体架构不太确定。
答案 0 :(得分:0)
RabbitMQ是轻量级的,易于在内部部署和部署 云。它支持多种消息传递协议。 RabbitMQ可以 部署在分布式和联合配置中以满足 高规模,高可用性要求。
只是一个小例子:
生产者将消息发送到“hello”队列。使用者从该队列接收消息。这将在RabbitMQ集群上创建一个带有消息的队列(hello)。
#!/usr/bin/env python
import pika
RABBITMQ_USERNAME = 'ansible'
RABBITMQ_PASSWORD = 'ansible'
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='example.eu-central-1.elb.amazonaws.com',
heartbeat_interval=25,
credentials=pika.PlainCredentials(RABBITMQ_USERNAME,RABBITMQ_PASSWORD)))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
从命名队列接收消息:
#!/usr/bin/env python
import pika
RABBITMQ_USERNAME = 'ansible'
RABBITMQ_PASSWORD = 'ansible'
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='example.elb.amazonaws.com',
heartbeat_interval=25,
credentials=pika.PlainCredentials(RABBITMQ_USERNAME,RABBITMQ_PASSWORD)))
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
channel.basic_consume(callback,
queue='hello',
no_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()