先日、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)
posted with amazlet at 11.09.13
三菱UFJインフォメーションテクノロジー株式会社 斉藤 賢哉
翔泳社
売り上げランキング: 153069
翔泳社
売り上げランキング: 153069
コメント
[…] SpringのJmsTemplateを使ってActiveMQにキューイング | shinodogg.com 今日は、MQからバッチでデータを取り出す処理を実装してみます。 ■ […]
[…] TomcatでActiveMQを動かしてみる SpringのJmsTemplateを使ってActiveMQにキューイング とか 実際に業務で使わなかったなと。。 […]