每秒打印消息数
Print Number of Message per Second
我有一个无限循环。我想每秒打印一条消息数。它应该每秒打印一次消息计数。例如,如果我在 1 秒内有 500 条消息,那么它应该在消息后将计数打印为 500,然后如果在接下来的 1 秒内为 500,那么它应该在消息后再次打印 500 这是我的代码:
static void SimulatePublish()
{
var counter = 1;
while (true)
{
counter++;
var testMessage = new MqttApplicationMessageBuilder()
.WithTopic("MqttData")
.WithPayload($"Payload: This is my Code")
.WithAtMostOnceQoS()
.WithRetainFlag()
.Build();
if (_client.IsConnected)
{
Console.WriteLine($"publishing at {DateTime.UtcNow}");
_client.PublishAsync(testMessage);
}
}
}
int messagesDiff = 0;
long startTime = DateTimeOffset.Now.ToUnixTimeSeconds(), timeDiff;
TimerCallback printingLambda = (o) =>
{
timeDiff = DateTimeOffset.Now.ToUnixTimeSeconds() - startTime;
Console.WriteLine("Messages per second: " + messagesDiff / (double)timeDiff);
startTime = DateTimeOffset.Now.ToUnixTimeSeconds();
messagesDiff = 0;
};
Timer timer = new Timer(printingLambda, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
while (true)
{
//public message
messagesDiff++;
}
我有一个无限循环。我想每秒打印一条消息数。它应该每秒打印一次消息计数。例如,如果我在 1 秒内有 500 条消息,那么它应该在消息后将计数打印为 500,然后如果在接下来的 1 秒内为 500,那么它应该在消息后再次打印 500 这是我的代码:
static void SimulatePublish()
{
var counter = 1;
while (true)
{
counter++;
var testMessage = new MqttApplicationMessageBuilder()
.WithTopic("MqttData")
.WithPayload($"Payload: This is my Code")
.WithAtMostOnceQoS()
.WithRetainFlag()
.Build();
if (_client.IsConnected)
{
Console.WriteLine($"publishing at {DateTime.UtcNow}");
_client.PublishAsync(testMessage);
}
}
}
int messagesDiff = 0;
long startTime = DateTimeOffset.Now.ToUnixTimeSeconds(), timeDiff;
TimerCallback printingLambda = (o) =>
{
timeDiff = DateTimeOffset.Now.ToUnixTimeSeconds() - startTime;
Console.WriteLine("Messages per second: " + messagesDiff / (double)timeDiff);
startTime = DateTimeOffset.Now.ToUnixTimeSeconds();
messagesDiff = 0;
};
Timer timer = new Timer(printingLambda, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
while (true)
{
//public message
messagesDiff++;
}