私はそれを理解することができ、他の人が見る/コメントするためにここで私の発見を共有すると思った。
まず私は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(" のdeviceIDを"、" 12345 ");"セレクタのキー/値のペアを追加する場所です。これは、どのコンシューマがどのメッセージを受け取るかを選択するために使用します。 ( '「忘れないでください)「=文字列セレクタ 『のdeviceID =『12345』』
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();
設定:
は「のdeviceID」の値に基づいてメッセージを取得するには、私はこのコードを使用します消費者は上記のみ示したセレクタを使用して送信されたキューからメッセージを取る意味
ご注意:上記のコードはほとんどない「ベストプラクティス」またはそれができるほど高速でコンパクトです。これは単純に私がコードを動作させる方法です。
これは、同じ問題を抱えている人に役立ちます。
はあなたを参照してくださいリンクから
:-)コメントをお気軽に、そして私が見てきた他の人が、あなたは、キー/値のペアとして、消費者の選択を与える必要があります。私が難しかったのは、このキーと値のペアをメッセージに入れる場所です。 メッセージのどこでどのようにセレクタのキーと値のペアを配置する必要があるのですか? – SorenA
あなたのオリジナルの質問は、あなたが今質問しているようには反映されていません。 –
私の質問が不明確であれば謝罪します。それをより明確にする時間をとってくれてありがとう。 – SorenA