在C#.NET中访问activemq统计插件
我正在尝试访问activemq statistics int C#举个例子: Y尝试了多种方法,但我收到的MapMessage为null或引发类似“无法将AMQMessage转换为MapMessage”的异常 这是我的班级:在C#.NET中访问activemq统计插件,c#,activemq,C#,Activemq,我正在尝试访问activemq statistics int C#举个例子: Y尝试了多种方法,但我收到的MapMessage为null或引发类似“无法将AMQMessage转换为MapMessage”的异常 这是我的班级: public class Statistics { private readonly IConnectionFactory connectionFactory; private readonly IConnection connection; pr
public class Statistics
{
private readonly IConnectionFactory connectionFactory;
private readonly IConnection connection;
private readonly ISession session;
public Statistics( string brokerUri)
{
this.connectionFactory = new ConnectionFactory(brokerUri);
this.connection = connectionFactory.CreateConnection();
this.connection.Start();
this.session = connection.CreateSession();
}
public void GetStats()
{
// Crear consumidor
try
{
// Creo una cola y consumidor
IDestination queueReplyTo = session.CreateTemporaryQueue();
IMessageConsumer consumer = session.CreateConsumer(queueReplyTo);
// Crear cola y productor
ActiveMQQueue newQueue = new ActiveMQQueue("ActiveMQ.Statistics.Destination.TEST1");
IMessageProducer producer = session.CreateProducer(null);
// Crear cola monitorizada
string listeningQueue = "TEST1";
ActiveMQQueue query = new ActiveMQQueue(listeningQueue);
// Mandar mensaje vacío y replicar
IMessage msg = session.CreateMessage();
producer.Send(newQueue, msg);
msg.NMSReplyTo = queueReplyTo;
producer.Send(query, msg);
// Recibir
IMapMessage reply = (IMapMessage)consumer.ReceiveNoWait();
if (reply != null)
{
IPrimitiveMap statsMap = reply.Body;
foreach (string statKey in statsMap.Keys)
{
Console.WriteLine("{0} = {1}", statKey, statsMap[statKey]);
}
}
}
catch (Exception e)
{
var t = e.Message + " " + e.StackTrace;
}
}
}
我的错误在哪里我的错误在哪里?提前感谢您能试试这个吗:
public class Statistics
{
private readonly IConnectionFactory connectionFactory;
private readonly IConnection connection;
private readonly ISession session;
public Statistics( string brokerUri)
{
this.connectionFactory = new ConnectionFactory(brokerUri);
this.connection = connectionFactory.CreateConnection();
this.connection.Start();
this.session = connection.CreateSession();
}
public void GetStats()
{
// Crear consumidor
try
{
// Creo una cola y consumidor
IDestination queueReplyTo = session.CreateTemporaryQueue();
IMessageConsumer consumer = session.CreateConsumer(queueReplyTo);
// Crear cola monitorizada
string listeningQueue = "TEST1";
ActiveMQQueue testQueue = session.GetQueue(listeningQueue);
// Crear cola y productor
ActiveMQQueue query = session.GetQueue("ActiveMQ.Statistics.Destination.TEST1");
IMessageProducer producer = session.CreateProducer(null);
// Mandar mensaje vacío y replicar
IMessage msg = session.CreateMessage();
producer.Send(testQueue, msg);
msg.NMSReplyTo = queueReplyTo;
producer.Send(query, msg);
// Recibir
IMapMessage reply = (IMapMessage)consumer.Receive();
if (reply != null)
{
IPrimitiveMap statsMap = reply.Body;
foreach (string statKey in statsMap.Keys)
{
Console.WriteLine("{0} = {1}", statKey, statsMap[statKey]);
}
}
}
catch (Exception e)
{
var t = e.Message + " " + e.StackTrace;
}
}
}
我认为,当消息发送到其他声明的队列时,发送到“queueReplyTo”的消息会自动发送。我不知道“统计学”是如何工作的,也找不到如何使用它的信息。我认为你需要仔细阅读才能理解这个概念。我用c#代码“CreateQueue”更新了我的响应,但是GetQueueconsumer.Receive()正在无限等待。“queueReplyTo”队列中没有消息。。。。我不明白消息何时发送到“queueReplyTo”以及是谁发送的?