我設法弄明白了,並認爲我會將我的發現分享給其他人看看/評論。
首先我創建了一個OperatorRequestObject類:
public class OperatorRequestObject
{
string shortcode;
public string Shortcode {
get { return shortcode; }
set { shortcode = value; }
}
}
當創建要發送到隊列中的消息我用這個代碼:
OperatorRequestObject OperatorRequestObject = new OperatorRequestObject();
OperatorRequestObject.Shortcode = tb_Request.Text.ToString();
IConnectionFactory factory = new NMSConnectionFactory("tcp://192.XXX.X.XXX:61616");
IConnection connection = factory.CreateConnection();
connection.Start();
ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
IDestination QueueDestination = SessionUtil.GetDestination(session, "Command");
IMessageProducer messageProducer = session.CreateProducer(QueueDestination);
ITextMessage request = session.CreateTextMessage(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": " + tb_Request.Text.Trim());
request.Properties.SetString("deviceID", "12345");
messageProducer.Send(request);
session.Close();
connection.Stop();
tb_Request.Text = "";
tb_Request.Focus();
線 「request.Properties.SetString(」 設備ID 「,」12345「);」是我添加我的選擇器鍵/值對,我用它來選擇哪個消費者得到什麼消息。
若要檢索基於「設備ID」的值的消息我用這個代碼:
string Selector = "deviceID = '12345'";
IConnectionFactory factory = new NMSConnectionFactory("tcp://192.XXX.X.XXX:61616");
IConnection connection = factory.CreateConnection();
connection.Start();
ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
IDestination destination = SessionUtil.GetDestination(session, "Command");
IMessageConsumer messageConsumer = session.CreateConsumer(destination, Selector);
IMessage message = messageConsumer.Receive();
string NewCommand = "";
if (message != null) {
ITextMessage IText = message as ITextMessage;
if (IText != null) {
if (!string.IsNullOrEmpty(IText.Text)) {
NewCommand = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": " + IText.Text;
}
}
}
tb_Command.Text = tb_Command.Text + "\r\n" + NewCommand;
messageConsumer.Close();
messageConsumer.Dispose();
connection.Stop();
connection.Close();
connection.Dispose();
設置「串選擇=‘設備ID =‘12345’’(不要忘了'「)意味着消費者只能從人發送使用上面所示的選擇的隊列中取出的消息
請注意:上面的代碼很可能不是「最佳實踐」或快速和緊湊,因爲它可以。這就是我如何設法讓我的代碼正常工作的。
希望這可以幫助有同樣問題的人。
隨意評論:-)
從您引用的鏈接以及我看過的其他鏈接中,您必須將消費者選擇器設置爲鍵/值對。我遇到的困難是將這個鍵/值對放在消息中。 任何人都可以告訴我在選擇器鍵/值對應放置在消息的哪裏和如何? – SorenA
您原來的問題並不能反映您現在所要問的內容,我會更新問題以說明問題。 –
如果我的問題不清楚,我很抱歉。感謝您花時間讓它更清晰。 – SorenA