[開発] ActiveMQ+Tomcat+Spring で電文送信する

■前提
ActiveMQ は Tomcat の内部に統合して動かす(※) = Tomcat のサブプロセスとして動作させる
ActiveMQ = v5.14.1
Tomcat = v8.5
接続ファクトリはJNDIで取得

※for google: integrating activemq with tomecat, integrating existing tomcat server with active mq, embed activemq in tomcat, configure activemq in tomcat

■サマリ
01 - ActiveMQ の jar を Tomcat の lib に配置する
02 - JNDIの登録
03 - ActiveMQ用の小細工
04 - ActiveMQの起動
05 - アプリ側の実装

■01 - ActiveMQ の jar を Tomcat の lib に配置する
Tomcat が ActiveMQ の jar を使用する為

取得先
C:\apache-activemq-5.14.1\lib

取得対象
geronimo-jms_ver.jar
geronimo-j2ee-management_ver.jar
activemq-spring_ver.jar
activemq-openwire-legacy_ver.jar
activemq-broker_ver.jar

格納先
C:\Program Files\Apache Software Foundation\Tomcat 8.5\lib
※ Linuxの場合 /opt/tomcat/apache-tomcat-ver/lib

個別にコピペが面倒い場合は
activemq-all.jar を上記の代わり配置する。
activemq-all.jar は以下から取得可能
http://mvnrepository.com/artifact/org.apache.activemq/activemq-all
Mavenでの取得も可能


org.apache.activemq
activemq-all
5.14.1


pom.xmlのあるディレクトリにcdしてmvn installすれば以下にjarができる筈。
それをTomcatのlibフォルダにコピーする
C:\Users\{userName}\.m2\repository\org\apache\activemq\activemq-all\5.14.1

■02 - JNDIの登録
C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf
context.xml に接続ファクトリとキューを定義


auth="Container" brokerName="localhost"
brokerURL="tcp://localhost:61616" password="admin" userName="admin"
type="org.apache.activemq.ActiveMQConnectionFactory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory" />


auth="Container"
type="org.apache.activemq.command.ActiveMQQueue" physicalName="AtrsRequestQueue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory" />

STS経由でTomcatを動作する場合は以下にあるcontext.xmlを更新する
C:\{workspace of STS}\Servers\Tomcat v8.5 Server at localhost-config

■03 - ActiveMQ用の小細工
Messageの実装クラスを独自の物にした場合、そのパッケージをTomcatのsetenvで実行引数に渡す。既存しない場合は新規作成
Windows
C:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\setev.bat
Linux
opt/tomcat/apache-tomcat-ver/bin/setenv.sh
定義例
-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=java.lang,java.util,org.apache.activemq,org.fusesource.hawtbuf,com.thoughtworks.xstream.mapper,hoge.piyo
任意のパッケージ名を指定する

■04 - ActiveMQの起動
cd C:\apache-activemq-5.14.1\bin
activemq stop
アプリより送信した電文は以下のActiveMQ管理画面のキュー画面から確認できる
http://127.0.0.1:8161/admin/
Login ID: admin
Password: admin

■05 - アプリ側の実装
Webにぎょうさん転がっているsampleの通り。
DynamicDestinationを使用すれば、ActiveMQに実在しないキューを動的に作成してくれる


ref.
Tomcat + Spring + ActiveMQ, 2015/10/31
http://www.javanbeyond.com/activemq/tomcat-spring-activemq/
Configure Apache ActiveMQ with Tomcat 6, 2010/12/03
https://rocksolutions.wordpress.com/2010/12/03/configure-apache-activemq-with-tomcat-6/
Pre-integrated Tomcat with ActiveMQ
http://activemq.apache.org/tomcat.html
TomcatでActiveMQを動かしてみる, 2011/8/24
https://shinodogg.com/?p=3593
How to embed ActiveMQ in Tomcat, 2011/06/01
http://blog.octera.info/2011/06/how-to-embed-activemq-in-tomcat/

tag : ActiveMQ Tomcat8 STS Spring JMS JNDI

2016-12-17 07:48 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud