我正在创建一个应用程序来连接到多个 ActiveMQ 服务器并获取具有不同队列的消息总数。
我正在使用此链接ActiveMQ with C# and Apache NMS - Count messages in queue 中找到的代码的略微修改版本,以计算队列中的消息。
我遇到的问题是,如果队列包含超过 400 条消息,则此代码停止计数为 400。
public static int GetMessageCount(string server, string user, string pw) {
int messageCount = 0;
var _server = $"activemq:ssl://{server}:61616?transport.acceptInvalidBrokerCert=true";
IConnectionFactory factory = new NMSConnectionFactory(_server);
using (IConnection connection = factory.CreateConnection(user, pw)) {
connection.Start();
using (ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge)) {
IDestination requestDestination = session.GetQueue(QueueRequestUri);
IQueueBrowser queueBrowser = session.CreateBrowser((IQueue)requestDestination);
IEnumerator messages = queueBrowser.GetEnumerator();
while (messages.MoveNext()) {
IMessage message = (IMessage)messages.Current;
messageCount++;
}
connection.Close();
session.Close();
connection.Close();
}
}
return messageCount;
}
如何获取队列中的实际消息数?
为什么会出现这种行为?这是 IEnumerator 接口的问题还是 Apache.NMS.ActiveMQ API 的问题?