ActiveMQのメッセージタイプ
JMS仕様メッセージタイプのTextMessage、MapMessageの、のObjectMessage、BytesMessageは、および他の5 StreamMessageの。ActiveMQのはまた、我々は合成五種類トランシーバコードの春JMSメッセージタイプを見て下方に、それぞれ対応して達成しました。
1、のTextMessage
/ * * *向指定宛先发送テキスト消息 * @param先 * @paramメッセージ * / 公共 ボイドsendTxtMessage(宛先先、最終的な文字列メッセージ){ 場合(ヌル == 先){ 宛先 = jmsTemplate.getDefaultDestination()。 } jmsTemplate.send(宛先、新しいMessageCreator(){ 公共メッセージcreateMessage(セッションセッション)スローたJMSException { 戻りsession.createTextMessage(メッセージ); } })。 システム。アウト.println(" springJMSは、テキストメッセージを送信... " ); }
2、のMapMessage
/ * * *向指定宛先发送マップ消息 * @param先 * @paramメッセージ * / 公共 ボイドsendMapMessage(宛先先、最終的な文字列メッセージ){ 場合(ヌル == 先){ 宛先 = jmsTemplate.getDefaultDestination()。 } jmsTemplate.send(宛先、新しいMessageCreator(){ 公共メッセージcreateMessage(セッションセッション)たJMSExceptionを{スロー 際、MapMessage際、MapMessage = session.createMapMessage(); mapMessage.setString(" MSGID " 、メッセージ)。 返す際、MapMessageを。 } })。 システム。アウト .println(" springJMSは、マップメッセージを送ります... " ); }
3、のObjectMessage
/ * * *向指定宛先发送序列化的对象 * @param先 * @param対象オブジェクト必须序列化 * / 公共 ボイド sendObjectMessage(宛先先、最終的な直列化オブジェクト){ 場合(ヌル == 先){ 宛先 = jmsTemplate。 getDefaultDestination(); } jmsTemplate.send(宛先、新しいMessageCreator(){ 公共メッセージcreateMessage(セッションセッション)たJMSExceptionが{スロー 戻り session.createObjectMessage(オブジェクト)。 } })。 システム。アウト .println(" springJMSは、オブジェクトメッセージを送ります... " ); }
4、交換のメッセージ
/ * * *向指定宛先发送字节消息 * @param先 * @paramバイト * / 公共 ボイド sendBytesMessage(宛先先、最終バイト[]バイト){ 場合(ヌル == 先){ 宛先 = jmsTemplate.getDefaultDestination() ; } jmsTemplate.send(宛先、新しいMessageCreator(){ 公共メッセージcreateMessage(セッションセッション)たJMSExceptionを{スロー BytesMessageはBytesMessageは = session.createBytesMessage()。 bytesMessage.writeBytes(バイト)。 返却はBytesMessageを。 } })。 システム。アウト .println(" springJMSが...バイト・メッセージを送ります" ); }
5、StreamMessageの
/ * * *向默认队列发送ストリーム消息 * / 公共 ボイドsendStreamMessage(宛先先){ jmsTemplate.send(新しいMessageCreator(){ 公共メッセージcreateMessage(セッションセッション)たJMSException {スロー StreamMessageのメッセージを = session.createStreamMessage(); メッセージ。 WriteStringメソッド(" ストリーム列" ); message.writeInt(11111 ); 戻りメッセージを; } })。 システム。アウト .println(" springJMSは、ストレムメッセージを送ります... " ); }
処理部を受け取るメッセージ:
/ * * *対応する処理のためにメッセージの種類に応じて *先に共通@param先メッセージの送信/受信が * JMSExceptionを@throws * / 公共 のボイド(あなたが先にしたいん)受信JMSExceptionを{スロー メッセージメッセージ = ; jmsTemplate.receiveを(あなたが欲しいんどこ) // もしテキストメッセージ IF (メッセージのTextMessageのinstanceof){ のTextMessage(TM) = (のTextMessage)メッセージ、 システム。OUT .println(" から" + destination.toString()+ " GETのTextMessage:\ T " + tm.getText())。 } // 如果是マップ消息 場合(MapMessageのinstanceofのメッセージ){ 際、MapMessage MM = (MapMessageの)メッセージ。 システム。アウト .println(" から" + destination.toString()+ " を得るのTextMessage:\トン" + mm.getString(" MSGID " )); } // 如果是オブジェクト消息 場合(メッセージのObjectMessageのinstanceof){ のObjectMessage OM = (のObjectMessage)メッセージ。 ExampleUser exampleUser = (ExampleUser)om.getObject(); システム。アウト .println(" から" + destination.toString()+ " を得るのObjectMessage:\トン" + ToStringBuilder.reflectionToString(exampleUser)); } // 如果是バイト消息 場合(BytesMessageはinstanceofのメッセージ){ バイト [] B = 新しい バイト [ 1024 ]; int型のlen = - 1 ; BytesMessageはBM = (BytesMessageは)メッセージ。 一方 - (!(LEN = bm.readBytes(B))= 1 ){ システム。アウト .println(新しい文字列(B、0 、LEN)); } } // 如果是ストリーム消息 場合(StreamMessageのinstanceofのメッセージ){ StreamMessageのSM = (StreamMessageの)メッセージ。 システム。アウト.println(sm.readString()); システム。アウト.println(sm.readInt()); } }