最初に注意してください、あなたのメッセージの量は物事が進むにつれてかなり小さいです。あなたは実際にどちらかを使うことができ、維持するのが最も簡単なものはおそらくあなたの選択を決定するでしょう。
再起動に関するPetterのコメントを拡張すると、考慮すべき1つのことは、ブローカーに接続する他のマシンの数です。
クライアント
ブローカーに100台のマシンが接続されている場合、ActiveMQが組み込まれたTomcatを再起動するたびに、100台の接続が切断され、すべてを再接続する必要があります。ActiveMQは再接続をサポートしているため、正常に機能しますが、全員が再接続する間、メッセージフローに不必要な遅延が追加される可能性があり、場合によっては、いくつかのクライアントが再接続に失敗し、手動でそれらを実行に移す必要があります。
スタンドアロンのブローカーとたとえば100のクライアントを使用すると、Tomcatサーバーを何度でも再起動でき、ブローカーからTomcatへの接続を1つだけ切断できます。それはとてもいいことです。
クライアントが1つしかない場合(Tomcatサーバー自体)は、ハンドダウンが埋め込まれ、in-vmトランスポートを使用します。
メモリー
もう1つの要因はメモリです。AmazonEC2のActiveMQをt1.microで使用しています。t1.microのメモリは613MBで、かなり小さいです。2つのt1.micros(1つはActiveMQ用、もう1つはTomcat用)を実行する方が、両方を備えた1つのm1.smallよりも安価です。
しかし、繰り返しになりますが、クライアントの数が要因です。Tomcat以外にクライアントがない場合は、1つのm1.smallを実行し、すべてを同じvmに保持する方がおそらくはるかに優れています。
ご参考までに
TomcatとActiveMQが主要なターゲットである場合は、ActiveMQがすでに統合されているTomcatであるApacheTomEEPlusを検討する必要があります。
すべてのjarがあり、Petterが話しているローカルトランスポートを使用して、組み込みのActiveMQブローカーですべてがデフォルトでセットアップされます。スタンドアロンのActiveMQブローカーを使用するように簡単に構成できます。また、JavaMailが組み込まれているので、役に立つかもしれません。
そのため、セットアップの部分をスキップして、アプリの作成に直接取り掛かることができます。たとえば、この単一のサーブレットを作成し、それを他のjarやクラスとの戦争に置くと、次のように機能します。
@WebServlet("/hello-world")
public class MyServet extends HttpServlet {
@Resource(name = "foo")
private Topic fooTopic;
@Resource(name = "bar")
private Queue barQueue;
@Resource
private ConnectionFactory connectionFactory;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//...
Connection connection = connectionFactory.createConnection();
connection.start();
// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create a MessageProducer from the Session to the Topic or Queue
MessageProducer producer = session.createProducer(fooTopic);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// Create a message
TextMessage message = session.createTextMessage("Hello World!");
// Tell the producer to send the message
producer.send(message);
//...
}
}
これは、Tomcatアダプターを介してEclipseでセットアップする方法を示す入門ビデオでもあります。