生成代码:0.生产者,产生一个大于20亿的数字,消费者判断数字是否为素数1、生产者、缓存项目和消费者分别各自独立项目,以三个进程独立启动 2、选择一个消息队列服务使用(MSMQ、RocketMQ等等 3.三个进程通过接口连接并运行
时间: 2024-02-05 18:02:58 浏览: 75
以下是一个示例代码实现,仅供参考:
生产者代码:
```python
import random
import time
import pika
# 连接 RabbitMQ 服务器
connection = pika.BlockingConnection(
pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# 声明队列
channel.queue_declare(queue='number_queue')
# 生成一个大于20亿的随机数
num = random.randint(2000000000, 2147483647)
# 将数字放入消息队列
channel.basic_publish(exchange='', routing_key='number_queue', body=str(num))
print("生产者:生成随机数 %d" % num)
# 关闭连接
connection.close()
```
消费者代码:
```python
import math
import time
import pika
# 连接 RabbitMQ 服务器
connection = pika.BlockingConnection(
pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# 声明队列
channel.queue_declare(queue='number_queue')
# 定义回调函数
def callback(ch, method, properties, body):
num = int(body)
# 判断数字是否为素数
is_prime = True
if num <= 1:
is_prime = False
else:
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
is_prime = False
break
if is_prime:
print("消费者:数字 %d 是素数" % num)
else:
print("消费者:数字 %d 不是素数" % num)
# 接收消息
channel.basic_consume(queue='number_queue', on_message_callback=callback, auto_ack=True)
print('消费者:等待消息中...')
channel.start_consuming()
```
注意:以上代码仅为示例,实际实现需要考虑更多细节和安全性问题,并根据具体情况进行修改。
阅读全文