这是我来自订阅者的现有代码,但它无法正常工作
_connection = factory.CreateConnection();
_connection.ClientId = "ID";
_connection.Start();
_session = _connection.CreateSession();
ITopic dest = _session.GetTopic(QUEUE_DESTINATION);
using (IMessageConsumer consumer = _session.CreateDurableConsumer(dest,"myDurable",null,false))
{
IMessage message;
while(true)
{
while ((message = consumer.Receive(TimeSpan.FromMilliseconds(5000))) != null)
{
var objectMessage = message as IObjectMessage;
if (objectMessage != null)
{
person = objectMessage.Body as Person;
if (person != null)
{
Console.WriteLine(person.FirstName);
Console.WriteLine(person.LastName);
}
}
else
{
Console.WriteLine("Object Message is null");
}
}
}
我也不确定是否需要在发布商方面做任何事情。 当发布者和订阅者都是UP和RUNNING时,此代码完美有效, 但是当订户处于DOWN状态并且再次UP和RUNNING时,排队的消息不会出列。我还在活动的mq控制台中验证了这一点。创建了持久的消费者,但我没有在订阅者中收到消息。
答案 0 :(得分:0)
问题是我没有先运行用户程序。必须运行,以便您的订阅者首先向activemq注册。您可以在“订购者”选项卡下的活动mq控制台中找到持久消费者。