我有三个 c# 类。
rabbitmq 订阅者有一个 connect() 方法、subscribe(Action messageHandler) 方法和一个 Ack(ulong messageId) 方法。该类实例化为单例,通过DI
传给下面两个类在 rabbitmq 订阅者上调用 connect() 和 subscribe() 的 IHostedService。它还引用了一个工作流类,一个通过 DI 传入的单例。此托管服务从不确认消息;当从队列中接收到消息时,它只是将消息传递给工作流类。
第三类是一个工作流类,它从 IHostedService 获取消息并将其传递给一系列 TPL 数据流块,最后一个调用在 rabbitmq 订阅者上确认。 tpl 数据流管道永远不会完成,因为它的目的是通过 IHostedService 保持活动状态。 IHostedService 对通过工作流的消息一无所知,这就是工作流类具有对 rabbit mq 订阅者的引用的原因。它需要在处理完成时确认消息。
rabbit mq 文档指定底层通道不应被多个线程使用。我怎样才能改变我的设计,使我遵守 rabbit mq 的单线程规则?
这是文档。