有没有办法等待Rabbitmq消息的接收?

时间:2019-01-23 08:39:18

标签: asp.net-core .net-core async-await rabbitmq

在一个用例中,我需要我的控制器动作来等待接收到特定的Rabbitmq消息,以便将结果返回给客户端,该消息将来自执行特定任务的单独工作人员。

我的api项目和worker项目是分开的,而Rabbitmq总线是它们之间的唯一中介。

编辑:这是当前方案:

  1. 客户端将请求发送到网络api以要求将其称为“数据”
  2. 网络api通过Rabbitmq发布Message-A
  3. 一个单独的服务项目处理已发布的Message-A,进行一些工作,然后发布一个新的Message-B,其中包含该工作的结果,我们称之为“ DATA”
  4. 这是问题所在:我的Web api控制器必须返回Message-B中包含的结果,因此控制器操作应等待该消息后再返回客户端

1 个答案:

答案 0 :(得分:1)

您需要使用TaskCompletionSource<T>

您需要订阅回复消息,如果正在等待回复,请设置任务完成源的结果。

然后等待任务完成源的任务。