我有一个消息通道,一个端点可以通过该通道向另一个端点发送消息。现在,每当消息到达通道时,我希望调用内部业务服务,假设该服务计算通过通道的消息数。但是,我不希望让消息通过,直到服务方法返回。
什么样的通道和端点配置可以实现这一点?
有几点需要注意:
- 接收端的周期性轮询器不满足要求,因为轮询器既不知道消息到达通道,也不知道服务方法何时返回
- 服务方法对消息的内容不感兴趣。
只需要在消息
到达时立即调用它(没有参数)。它也不返回任何东西。这就是为什么使用过滤器不是一个理想的解决方案(过滤器只是转发任何传入的消息并在两者之间调用服务方法)
编辑:服务方法可能发生的一件可能的事情是它可能会引发异常。在这种情况下,不应放开消息,需要做其他事情。但是异常的原因与消息有效负载无关,因为它对有效负载没有任何作用。例如,它只是增加一个消息计数器。这就是为什么我提到消息本身不应该(理想情况下)发送到服务方法,它只需要适当地触发,并且一旦服务方法成功返回,通道应该允许将消息分派到最终端点。(我只是在想,而不是服务方法有可能引发异常,您可以考虑返回一个布尔值;即如果通过则为 true,否则为 false)