我在activemq中有问题。我想从我的activemq队列中收到一条特殊消息。我有超过300条消息,我想要其中一条消息。我用multiselectcombobox解决了这个问题。在此框中,我将收到所有具有所需属性的消息。
当我单击247项目时,我想选择接收消息的项目,之后我要发送消息,但首先我的接收有问题。
我不知道为什么它不起作用。也许有人有主意?
ErrorMessageProperty prop = new ErrorMessageProperty();
IMessage message = null;
try
{
string MsgID = MSGID;
string desinationque = sourceQueue;
string selector = "ProducerId = '" + MsgID + "'";
IDestination dest = MQSession.GetDestination(desinationque);
Uri _activeMQURI = new Uri(conf.ActiveMqURL);
MQConnectionFactory = new NMSConnectionFactory(_activeMQURI);
using (MQConnection = MQConnectionFactory.CreateConnection(conf.ActiveMqUser, conf.ActiveMqPWD))
using (MQSession = MQConnection.CreateSession(AcknowledgementMode.AutoAcknowledge))
{
try
{
MQConnection.Start();
}
catch (Exception ex)
{
myLogger.NLogger.Info("MQReceiveTextMessage Connection fehlgeschlagen: " + ex.Message);
}
using (IMessageConsumer consumer = this.MQSession.CreateConsumer(dest, selector,false))
{
if (shallwait)
{
try
{
message = consumer.Receive();
}
catch (Exception ex)
{
myLogger.NLogger.Error("Error in consumer Receive (MQReceiveTextMessage): Message" + message + " Fehler-Exception: " + ex.Message);
}
}
else
{
message = consumer.Receive(TimeSpan.FromSeconds(1));
}
}
}
}
catch (Exception ex)
{
myLogger.NLogger.Error("Error in MQReceiveTextMessage: Parameter: sourceQueue: " + sourceQueue + " MSGID: " + MSGID + " Message: " + message + " Fehler-Exception: " + ex.Message);
}
return message;
}
我的ProducerID
是正确的。但是为什么不起作用呢?停在那一行
message = consumer.receive();
我不知道了
答案 0 :(得分:0)
通过选择器ProducerId = 'MsgIDValue'
,操作consumer.receive()
正在队列中使用自定义属性“ ProducerId”和变量MsgID的值搜索消息。如果找不到该消息,则消费者等待新消息。
如果要搜索默认消息字段,则消息头字段引用仅限于JMSDeliveryMode,JMSPriority,JMSMessageID,JMSTimestamp,JMSCorrelationID和JMSType。 JMSMessageID,JMSCorrelationID和JMSType值可以为null,如果为null,则为null。
答案 1 :(得分:0)
我使用了Apache.NMS和Apache.NMS.ActiveMQ(1.7.1.3924) 有可能使用这个API而不是JMS吗? 我从1周开始尝试此操作,选择器不起作用。 也许有人了