先日、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にキューイング とか 実際に業務で使わなかったなと。。 […]