Есть ли способ перечислить все активные очереди в ActiveMQ. Я использую Apache.NMS для связи с ActiveMQ с C#.Список доступных очередей в ActiveMQ Apache.NMS в C# .net
Я не вижу прямых методов в библиотеке.
Есть ли способ перечислить все активные очереди в ActiveMQ. Я использую Apache.NMS для связи с ActiveMQ с C#.Список доступных очередей в ActiveMQ Apache.NMS в C# .net
Я не вижу прямых методов в библиотеке.
Пожалуйста, попробуйте это.
public void Test()
{
//Please create connection and session @ this point
String QUEUE_ADVISORY_DESTINATION = "ActiveMQ.Advisory.Queue";
IDestination dest = Session.GetTopic(QUEUE_ADVISORY_DESTINATION);
using (IMessageConsumer consumer = Session.CreateConsumer(dest))
{
IMessage advisory;
while ((advisory = consumer.Receive()) != null)
{
ActiveMQMessage amqMsg = advisory as ActiveMQMessage;
if (amqMsg.DataStructure != null)
{
DestinationInfo info = amqMsg.DataStructure as DestinationInfo;
if (info != null)
{
Console.WriteLine(" Queue: " + info.Destination.ToString());
}
}
}
}
Console.WriteLine("Listing Complete.");
}
Это не гарантированный способ размещения очередей. См. this answer.
В приведенном выше решении содержится один дефект. Если вы будете пытаться получить сообщение, как это:
consumer.Receive()
вы будете ждать бесконечно долго, пока новое событие не будет произошло с очередями информации в ActiveMQ.
Я рекомендую установить тайм-аут:
consumer.Receive(TimeSpan.FromMilliseconds(2000))
и посмотреть пример offitial site
Попытка это .. Спасибо ... По крайней мере, получил направление. – Zach