Disable/block 高流量期间的 BizTalk WCF 发送端口
Disable/block BizTalk WCF Send Port during high volume
我有一个非 critical/optional WCF 发送端口,它在正常操作期间很有用,但需要在特定的消息吞吐量时自动禁用。当连接的系统执行数据加载(每小时 100 000 条消息或更多)时,会出现这种高容量。来自高容量时间的消息不应保留或处理,只需完全丢弃。一旦音量低于阈值水平,发送端口应恢复 processing/sending 消息。该应用程序不使用编排。
到目前为止,我唯一的想法是使用自定义管道组件和类似 redis 的东西来跟踪吞吐量,然后根据此丢弃或发送消息。这似乎不是一个很好的技巧。
我的问题是:使用 WCF 适配器(或其他东西)是否有一种简单的方法来根据当前消息吞吐量丢弃消息或发送消息?
在这种情况下,我通常做的是将传入的消息保存到数据库 table,然后有一个接收位置轮询 table 来处理消息。因此,您可以拥有一个由该轮询接收位置调用的存储过程,如果有太多待处理消息,则将其删除。如果您收到大量想要处理所有这些消息,或者如果您想要将它们分批发送,这种方法也适用。
注意:在这种情况下不要设置 Poll while messages found = True。
我有一个非 critical/optional WCF 发送端口,它在正常操作期间很有用,但需要在特定的消息吞吐量时自动禁用。当连接的系统执行数据加载(每小时 100 000 条消息或更多)时,会出现这种高容量。来自高容量时间的消息不应保留或处理,只需完全丢弃。一旦音量低于阈值水平,发送端口应恢复 processing/sending 消息。该应用程序不使用编排。 到目前为止,我唯一的想法是使用自定义管道组件和类似 redis 的东西来跟踪吞吐量,然后根据此丢弃或发送消息。这似乎不是一个很好的技巧。
我的问题是:使用 WCF 适配器(或其他东西)是否有一种简单的方法来根据当前消息吞吐量丢弃消息或发送消息?
在这种情况下,我通常做的是将传入的消息保存到数据库 table,然后有一个接收位置轮询 table 来处理消息。因此,您可以拥有一个由该轮询接收位置调用的存储过程,如果有太多待处理消息,则将其删除。如果您收到大量想要处理所有这些消息,或者如果您想要将它们分批发送,这种方法也适用。
注意:在这种情况下不要设置 Poll while messages found = True。