SpringのJmsTemplateを使ってActiveMQにキューイング

先日、TomcatでActiveMQを動かしてみる(http://shinodogg.com/?p=3593)というエントリで、
普通のJavaアプリケーションからTomcat上のActiveMQにキューイングしてみましたが、
今回はSpringの便利機能的なオブジェクトを使って、
SpringMVCのWebアプリケーションからActiveMQにキューイングしてみます。
 
■ Bean定義ファイル
ActiveMQへのコネクションファクトリと、
そのファクトリを使ってコネクション取得して、
そっからアレやコレややってくれるTemplateクラスをXMLに定義します。
#ref=のところをvalue=にしちゃって、IllegalStateExceptionで
#Cannot convert value of typeとかあるよね~w

	<beans:bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    	<beans:property name="brokerURL" value="tcp://localhost:61616" />
	</beans:bean>

	<beans:bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    	<beans:property name="connectionFactory" ref="jmsFactory" />
		<beans:property name="defaultDestinationName" value="TestQueue" />
	</beans:bean>

 
■ コントローラー
コントローラーでやらせるかどうか?ってのはありますが、
こんだけでイイってのは楽チンですね。

@Autowired
private JmsTemplate jmsTemplate;
~略~
@RequestMapping(value = "/hoge", method = RequestMethod.POST)
public String regist(@ModelAttribute Hoge hoge, Locale locale, Model model) throws JMSException {
   // ホントは引数でもらったHogeオブジェクトをほげほげするところだけどw
   // とりあえず今回は単なる文字列で…
   jmsTemplate.convertAndSend("hoge");

   return "hoge";
}

 
■ MQからデータを取得するバッチ
イイ感じにhogeがTomcat上のActiveMQから取れました。

194 [ActiveMQ Task-1] INFO org.apache.activemq.transport.failover.FailoverTransport - Successfully connected to tcp://localhost:61616
hoge

一応MQから取得するコードも載せますが、こいつはゆくゆくSpringBatchにして
毎分のcron起動にする予定です。

//Connectionを作成するFactoryを作成
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
QueueConnection connection = factory.createQueueConnection();

//セッションの作成
QueueSession session = connection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("TestQueue");

//Queueと関連付け
QueueReceiver receiver = session.createReceiver(queue);

connection.start();

//メッセージの受信
TextMessage msg = (TextMessage) receiver.receive();
System.out.println(msg.getText());

receiver.close();
session.close();
connection.close();

 

マスタリングJavaEE5 第2版 (DVD付) (Programmer’s SELECTION)
三菱UFJインフォメーションテクノロジー株式会社 斉藤 賢哉
翔泳社
売り上げランキング: 153069

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. […] SpringのJmsTemplateを使ってActiveMQにキューイング | shinodogg.com 今日は、MQからバッチでデータを取り出す処理を実装してみます。   ■ […]

  2. […] TomcatでActiveMQを動かしてみる SpringのJmsTemplateを使ってActiveMQにキューイング とか 実際に業務で使わなかったなと。。   […]