【发布时间】:2019-07-02 11:04:19
【问题描述】:
我正在使用 EasyNetQ 使用 f# 管理我的 RabbitMq 消息总线,它非常简单,这个发布消息:
let HandleBusResponse (data:BaseFrame) (bus:IBus) : ISubscriptionResult =
let handler = Action<RequestMessage>(fun request ->
let cabinetSubscribeId = sprintf "Project.%i" request.ProjectId
match request.FrameType with
| FrameType.UNDEFINED ->
let response = ResponseService.BusRequestFactory request data
| _ ->
let response = ResponseService.BusRequestFactory request data
bus.Publish<ResponseMessage>(response, cabinetSubscribeId))
并且此方法(订阅者)在应用程序中的某处被调用,例如:
HandleBusResponse data bus
//WAIT FOR MESSAGE ARRIVAL
informationPools.AddToConnectionPool(data.ProjectId, client) |> ignore
ClientInfoHandler client data |> Async.RunSynchronously|> ignore
与在 c# 中的工作方式基本相同。
现在这段代码超出了订阅者处理程序,我的问题是是否可以从这部分检测到
//等待消息到达
如果有新的东西到达,使用某种 while(记住第二个代码 sn-p 在订阅处理程序之外)?
【问题讨论】: