多个消费者是否可以接收同一条消息。我有一个生产者,它从网络套接字生成刻度数据(股票市场)。我现在有一个消费者每秒收到 1000 条消息,效果很好。但现在我想让多个消费者使用System.Threading.Channels
. 单个生产者/消费者的完整工作代码。
class ConsumerOne
{
private readonly Channel<DummyData> _tickQueue;
private readonly CancellationTokenSource _cancellationTokenSource;
private readonly string _tag;
public ConsumerOne(Channel<DummyData> tickQueue, CancellationTokenSource cancellationTokenSource, string tag)
{
_tickQueue = tickQueue;
_cancellationTokenSource = cancellationTokenSource;
_tag = tag;
}
public async Task StartConsuming()
{
await foreach (var message in _tickQueue.Reader.ReadAllAsync(
cancellationToken: _cancellationTokenSource.Token))
{
// Business logic of One
Console.WriteLine($"from consumer {_tag} ==> {message.Price}");
}
}
}
public class DummyData
{
public long Ticks { get; set; }
public DateTime DateTime …
Run Code Online (Sandbox Code Playgroud) c# producer-consumer publish-subscribe .net-core system.threading.channels