James Strachan が言うように - http://activemq.apache.org/ajax.htmlは、問題に対する理想的なすぐに使えるソリューションです。
このようなソリューションを手動で作成したい場合は、Ajax サーブレットで JMS 接続を作成するだけです (リクエストごとの接続)。そのため、Spring JMS テンプレートの使用を検討してください ( http://static.springsource.org/spring/docs/2.5.x/reference/jms.html )。次に、サーブレットの doGet/doPost メソッドでメッセージを受け取るだけです。その場合、受信のタイムアウト値を低くすることを検討してください。このようなソリューションは、キューと永続的なトピックで機能します。
非永続的なトピックについては、外部メッセージ リスナーを検討してください。SpringMessageListenerContainer
は、その目的のための優れたツールです。
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer
<property name="connectionFactory" ref="jmsFactory"/>
<property name="destination" ref="myTopic" />
<property name="messageListener" ref="lastTenUpdatesCache" />
</bean>
BeanlastTenUpdatesCache
は、 を実装するシングルトン Bean になりますMesssageListener
。この Bean は、最後の 10 個のメッセージをキャッシュする役割を果たします (それを java.util リストに入れるだけです)。これは Ajax サーブレットに挿入されるため、doGet/doPost メソッドで、トピックに送信された最新の 10 件のメッセージについて問い合わせることができます。