Flex BlazeDSメッセージ実装の注意


メッセージを送信するコードの例は次のとおりです.
var message:AsyncMessage = new AsyncMessage();
            message.body = {userId:"student" , text:”hello”}
            producer.send(message); 

受信前にconsumerを呼び出す必要があります.subscribe();トピックを購読します.
メッセージを受信するコードの例は次のとおりです.
private function messageHandler(event:MessageEvent):void
        {
            trace(event.message.body.userId + ": " + event.message.body.text + "
"); }

【サブトピックを使用してメッセージをフィルタリングする】
サブトピック機能は、Pが送信するメッセージを指定した種類に分解することができます.サブスクリプションのCを構成して、指定したサブトピックまたは一連のサブトピックを受信できます.複数のサブトピックを送信または受信するには、一般化された文字(*)を使用します.
Pのsubtopicプロパティでサブトピックを指定します.

var message:AsyncMessage = new AsyncMessage();
producer.subtopic = "chat.john";
producer.destination="ChatTopic"
// Generate message.
producer.send(message);
Cのsubtopicプロパティで、Cが購読したいサブトピックを指定します.
consumer.destination = "ChatTopic";
consumer.subtopic = "chat.john";
consumer.subscribe();
サブトピックを許可するには、プロファイルのdestinationの定義でallow-subtopicsをtrueに設定する必要があります.サブトピックセパレータは.で定義します.
【メッセージセレクタでメッセージをフィルタリング】受信したメッセージをフィルタするには、Cのselectorプロパティを使用します.メッセージ・セレクタは、SQLの条件式を含む文字列です.このようにCは、メッセージヘッダがセレクタの仕様に合致するメッセージのみを受信する.
追加の情報をメッセージヘッダに含め、メッセージヘッダには関連配列が含まれ、キーがヘッダ名です.
ASコード:
var message:AsyncMessage = new AsyncMessage();
message.headers = new Array();
message.headers["prop1"] = 5;
message.body = ...;
producer.send(message);

JAvaコード:
MessageBroker msgBroker = MessageBroker.GetMessageBroker(null);
AsyncMessage msg = new AsyncMessage();
msg.destination = ...;
msg.headers.Add("prop1", 5);
msg.clientId = Guid.NewGuid().ToString("D");
msg.messageId = Guid.NewGuid().ToString("D");
msg.timestamp = Environment.TickCount;
msg.body = ...;
msgBroker.RouteMessage(msg);

メッセージセレクタは、メッセージボディには関係ありません.メッセージヘッダ内の値ドメインと属性値のみをフィルタします.
評価の過程は左から右へであり,括弧は順序を変えることができる.
セレクタ要素
説明

テキスト
一重引用符による文字
正確な小数点のない数字(57,-57)
科学計数法で表される近似数字(-57.9 E 2)、小数のある数字(57.2)
Boolean型文字TRUEとFALSE
識別子
識別子はC#の識別構文を使用し、大文字と小文字が敏感で、識別子は以下の名前NULL、TRUE、FALSE、NOT、AND、OR、BETWEEN、LIKE、IN、ISではありません.
式#シキ#
セレクタは条件式であり、trueを評価すると一致し、falseまたはunknownの場合は一致しません.()評価の順序を規範化するために使用されます.論理操作の優先順位は,NOT,AND,ORである.比較オペレータは、=,>,>=,<,<=,<>
"p1 < 23"
"p1 = 1 OR p1 = 2"
数学オペレータ
+、-プラスマイナス、*、/乗算、+、-減算
BETWEEN
arithmetic-expr1 [NOT] BETWEEN arithmetic-expr2 AND arithmetic-expr3
"1 BETWEEN -1 AND 2"
"p1 BETWEEN -1 AND (2-5)"
"age BETWEEN 15 AND 19"
IN
identifier [NOT] IN (string-literal1, string-literal2,... )
"1 IN (1,2,3)"
"p1 NOT IN (1,2,3)"
"Country IN (' UK', 'US', 'France')"
LIKE
identifier [NOT] LIKE pattern-value [ESCAPE escape-character] 
"phone LIKE '12%3'"
IS
テストnull
"user IS NOT NULL"