15、发送任务(send task) & 接收任务(received task)

描述

发送任务是一个非常简单的任务,一般只用来发送一个消息;
在这里插入图片描述

接收任务用来等待发送任务的消息,仅仅用来等待作用。
在这里插入图片描述

发送任务和接收任务一般成对配合使用。

需求

有简单的一个发送任务根据接收任务的消息ID和业务KEY(businessKey)来绑定一个消息发送,接收任务收到发送任务的消息后才往下流转。

设计BPMN

发送任务

在这里插入图片描述

接收任务

在这里插入图片描述

发送任务代码

 发送任务需要根据接收任务的消息名称(接收任务中的message name),及业务businessKey,businesskey后面会专门讲,一般与单次流程实例一一对应,常规做法会与业务侧业务ID相关联。这里使用businessKey作用就是为防止所有流程实例都收到消息。
<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Python 中,我们通常使用消息中间件来实现任务队列。常见的消息中间件有 RabbitMQ、Redis 和 Kafka 等。这些消息中间件可以帮助我们实现任务队列,将任务加入队列并按照先进先出的顺序进行处理。 使用 RabbitMQ 实现任务队列的示例代码如下: ``` python import pika # 连接 RabbitMQ connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 创建队列 channel.queue_declare(queue='task_queue', durable=True) # 发送任务 def send_task(task): channel.basic_publish(exchange='', routing_key='task_queue', body=task, properties=pika.BasicProperties( delivery_mode=2, # 使任务持久化 )) # 处理任务 def process_task(ch, method, properties, body): print("Received %r" % body) # 执行任务 # ... # 执行完毕后发送确认消息 ch.basic_ack(delivery_tag=method.delivery_tag) # 每个消费者同时只能处理一个任务 channel.basic_qos(prefetch_count=1) # 注册消费者 channel.basic_consume(queue='task_queue', on_message_callback=process_task) # 启动消费者 channel.start_consuming() ``` 以上代码中,我们使用 RabbitMQ 的 Python 客户端 pika 连接 RabbitMQ 并创建了队列。send_task() 函数用于向队列中发送任务,process_task() 函数用于处理任务。我们使用 channel.basic_publish() 发送任务,使用 channel.basic_consume() 注册消费者并启动消费者。 在实际使用中,我们可以将 send_task() 函数封装成一个任务队列的 API,供其他模块调用。同时,我们可以为每个任务设置超时时间,以便在任务长时间未完成时可以进行超时处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老柳聊技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值