MassTransit将来的流程消息

时间:2012-05-31 10:32:54

标签: .net rabbitmq esb masstransit

我正在使用RabbitMQ为项目评估MassTransit,我们希望能够将消息处理延迟到某个时间。

目标如下:

  • 用户会做一些影响其他用户的事情
  • 会向公交车发送一条消息,通知受影响的用户一小时后
  • 用户执行更多操作并发送更多通知
  • 一小时过去了:
    • 自上次摘要以来已超过一个小时:处理邮件,收集每个用户的所有待处理通知,如果至少有一个,则向其发送摘要。
    • 距离上次摘要不到一小时:邮件未处理,再次排队等待一小时。

事情是可以通知很多事情,所以我们不想立即发送它们,而是稍后进行总结。可以用MassTransit和RabbitMQ完成吗?

2 个答案:

答案 0 :(得分:2)

我意识到这是一篇旧帖子,但是任何寻找这个问题解决方案的人都应该查看https://github.com/MassTransit/MassTransit-Quartz

你基本上发布了一个延迟消息,它应该重新发布到总线上,Quartz服务(在项目中提供)负责将它持久保存到临时存储中,然后在时间发布时将其发布出去来了。

答案 1 :(得分:0)

我认为您希望将其分为两个阶段,因此邮件在到达时会被处理,但在需要之前不会被处理。

  1. MassTransit进程收到消息,并将通知保留在某种数据存储中。

  2. 您还有一个总结过程,偶尔会运行,查看数据存储以查看未完成的内容,如果距离上次摘要超过一个小时,则会将摘要通知发送给用户。

  3. 编辑:可能会破解RabbitMQ来执行此操作,请参阅http://www.javacodegeeks.com/2012/04/rabbitmq-scheduled-message-delivery.html