activeMQ統合スプリングの使い方
6726 ワード
問題二:JMSTemplateテンプレートはどのように配置すればいいですか?
jdbcTemplateに似ています.まずConnection Factoryを配置して、ActiveMQ 5.2をメッセージサーバとして採用します.その後、JmsTemplateテンプレートの設定を開始します.最後にメッセージターゲットを設定します.メッセージはキューとテーマの2つのカテゴリに分けられていますので、2つのメッセージターゲットを設定します.
質問3:どのようにJmsTemplateを使ってメッセージを送りますか?
springのbeanfactoryはjmsTemplateのインスタンスとメッセージターゲットのインスタンスを得て、メッセージを送るのは簡単だろう.コードを見る:
多くの場合、メッセージの送信先はデフォルトですので、jmsTemplateにデフォルトのメッセージターゲットを設定できますか?答えは肯定的です.
問題四:jmsTemplateはどうやって情報を受け取りますか?
jmsTemplate受信メッセージは非常に簡単で、template.receive()メソッドを呼び出すだけで、receive方法は同期されています.デフォルトでは、receive()メソッドの呼び出しがブロックされ、メッセージが目的に達することを知っています.メッセージ内容の待ち時間を回避するために、jmsTemplateを設定することができる場合は、receive Timeout属性を設定することにより、受信メッセージのタイムアウト時間を指定します.以下の構成では、受信メッセージのタイムアウト時間を1分間(60000ミリ秒)に設定します.
問題5:どのように自動的にメッセージをJavaオブジェクトに変換しますか?
トランスコーダは多くのコンポーネントの中で欠かせないものです.SpringはMessage Coverterインターフェースを通じてメッセージ変換のサポートを提供しています.
以下のコードは簡単にMessage Coverterの二つのインターフェースを実現しました.
しかし、jmsTemplateはどうやってメッセージ変換器を知っていますか?jmsTemplateを配置する際に、message Coverter属性を追加する必要があります.
message Objは、変換されるjavaオブジェクトのbeanのidである.
jdbcTemplateに似ています.まずConnection Factoryを配置して、ActiveMQ 5.2をメッセージサーバとして採用します.その後、JmsTemplateテンプレートの設定を開始します.最後にメッセージターゲットを設定します.メッセージはキューとテーマの2つのカテゴリに分けられていますので、2つのメッセージターゲットを設定します.
:
<!-- ActiveMQ -->
<!-- JMS -->
<bean id="JmsConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<!-- JMS -->
<bean id="JmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="JmsConnectionFactory"/>
</bean>
<!-- ( ) -->
<bean id="QueueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- -->
<constructor-arg index="0" value="HelloWorldQueue"/>
</bean>
<!-- ( ) -->
<bean id="TopicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<!-- -->
<constructor-arg index="0" value="FlexTopic"/>
</bean>
<!-- ActiveMQ -->
質問3:どのようにJmsTemplateを使ってメッセージを送りますか?
springのbeanfactoryはjmsTemplateのインスタンスとメッセージターゲットのインスタンスを得て、メッセージを送るのは簡単だろう.コードを見る:
JmsTemplate template = (JmsTemplate) SpringContext.getBean("JmsTemplate");
ActiveMQTopic destination=(ActiveMQTopic)SpringContext.getBean("TopicDestination");
template.send((javax.jms.Destination) destination, new MessageCreator(){
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("hello");
}
});
問題四:上のコードは簡単にできますか?多くの場合、メッセージの送信先はデフォルトですので、jmsTemplateにデフォルトのメッセージターゲットを設定できますか?答えは肯定的です.
<!-- JMS -->
<bean id="JmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="JmsConnectionFactory"/>
<property name="defaultDestination" ref="TopicDestination"></property>
</bean>
問題四:jmsTemplateはどうやって情報を受け取りますか?
jmsTemplate受信メッセージは非常に簡単で、template.receive()メソッドを呼び出すだけで、receive方法は同期されています.デフォルトでは、receive()メソッドの呼び出しがブロックされ、メッセージが目的に達することを知っています.メッセージ内容の待ち時間を回避するために、jmsTemplateを設定することができる場合は、receive Timeout属性を設定することにより、受信メッセージのタイムアウト時間を指定します.以下の構成では、受信メッセージのタイムアウト時間を1分間(60000ミリ秒)に設定します.
<!-- JMS -->
<bean id="JmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="JmsConnectionFactory"/>
<property name="defaultDestination" ref="TopicDestination"></property>
<property name="receiveTimeout" value="60000"></property>
</bean>
問題5:どのように自動的にメッセージをJavaオブジェクトに変換しますか?
トランスコーダは多くのコンポーネントの中で欠かせないものです.SpringはMessage Coverterインターフェースを通じてメッセージ変換のサポートを提供しています.
public class MyMessageConverter implements MessageConverter {
@Override
public Object fromMessage(Message arg0) throws JMSException,
MessageConversionException {
// TODO Auto-generated method stub
return null;
}
@Override
public Message toMessage(Object arg0, Session arg1) throws JMSException,
MessageConversionException {
// TODO Auto-generated method stub
return null;
}
}
Message Coverterインターフェースの二つの方法は簡単明瞭である.送信側toMessageでは、javaオブジェクトをメッセージに変換し、受信側ではfrom Messageでメッセージをjavaオブジェクトに変換する.以下のコードは簡単にMessage Coverterの二つのインターフェースを実現しました.
public class MyMessageConverter implements MessageConverter {
@Override
public Object fromMessage(Message message) throws JMSException,
MessageConversionException {
if(!(message instanceof MapMessage)){
throw new MessageConversionException("Messae is not MapMessage");
}
MapMessage mapMessage=(MapMessage)message;
MessageObj messageObj=new MessageObj();
messageObj.setId(mapMessage.getString("id"));
messageObj.setInfo(mapMessage.getString("info"));
return messageObj;
}
@Override
public Message toMessage(Object obj, Session session) throws JMSException,
MessageConversionException {
if(!(obj instanceof MessageObj)){
throw new MessageConversionException("obj is not MessageObj");
}
MessageObj messageObj=(MessageObj)obj;
MapMessage mapMessage=session.createMapMessage();
mapMessage.setString("id", messageObj.getId());
mapMessage.setString("info", messageObj.getInfo());
return mapMessage;
}
}
このとき、メッセージの送信と受信は、template.co nvertAndSendに変更される.template.receive AndConvert()しかし、jmsTemplateはどうやってメッセージ変換器を知っていますか?jmsTemplateを配置する際に、message Coverter属性を追加する必要があります.
<!-- JMS -->
<bean id="JmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="JmsConnectionFactory"/>
<property name="defaultDestination" ref="TopicDestination"></property>
<property name="receiveTimeout" value="60000"></property>
<property name="messageConverter
" ref="messageObj"></property>
</bean>
message Objは、変換されるjavaオブジェクトのbeanのidである.