L'incorporation de courtier ActiveMQ dans Spring-MVC Tomcat webapp

J'ai un petit Spring MVC webapp (qui intègre ActiveMQ) qui est conçu pour fonctionner dans un local de Tomcat, et de manière fiable message à une file d'attente sur une distance ActiveMQ.

Tout cela est en place, sauf pour le "fiable". Pour le moment, si la distance site tombe en panne, l'envoyer échoue de façon spectaculaire. Mon envoyer config:

<!-- Connection setup -->
<bean id="connectionFactory" 
    class="org.apache.activemq.ActiveMQConnectionFactory" 
    p:brokerURL="tcp://backend-server-box:61616" />

<bean id="cachedConnectionFactory" 
    class="org.springframework.jms.connection.CachingConnectionFactory"
    p:targetConnectionFactory-ref="connectionFactory" 
    p:sessionCacheSize="10" />

<!-- Bean that represents the correct destination on the backend server -->
<bean id="backendDestination" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="jmsQueueName" />
</bean>

<bean id="backendTemplate" 
    class="org.springframework.jms.core.JmsTemplate"
    p:connectionFactory-ref="cachedConnectionFactory"
    p:defaultDestination-ref="backendDestination" />

<!-- Bean that sends to the correct destination on the backend server -->
<bean id="simpleSender" class="uk.co.mycompany.client.messaging.SimpleSender">
    <property name="jmsTemplate" ref="backendTemplate" />
</bean>

Je pense que j'ai besoin d'un local, la persistance de courtier que le connectionFactory (le premier bean défini ci-dessus), points à, qui est conscient de la distance courtier (JMS à JMS pont?) Si il ya clairement un peu de documentation à traiter avec cela, je serais très heureux d'être signalée, mais j'ai dû bricoler des choses ensemble, surtout à partir de la extrêmement utile BruceBlog. Ou de toute aide directe serait génial.

Grâce

mise à Jour. Quelques corrections:

  1. Eclipse ne trouve pas l'amq espace de noms correctement. Cette est l'endroit où vous découvrez pourquoi c'est cassé, et c'est une solution facile.
  2. Comme Miklos dit dans un commentaire ci-dessous, vous avez besoin de la org.osgi.core-4.1.0.jar dans votre webapp lib. Obtenir ce à partir de la ActiveMQ lib/facultatif dossier.
  3. Vous avez également besoin d'Apache Commons xbean-spring-3.4.jar. Obtenir ici.
  4. Cette guide m'a ouvert les prochains obstacles. C'est parfait, sauf dans quelques endroits les noms d'attributs sont incorrectes (brokername devrait être brokerName, et physicalname devrait être physicalName).

Mise à jour 2. J'ai répondu correctement, ci-dessous. N'a pas besoin de tout cela amq trucs!

InformationsquelleAutor Robert Grant | 2010-08-18