【发布时间】:2011-03-31 14:19:22
【问题描述】:
我有一个小型 Spring MVC webapp(它嵌入了 ActiveMQ),旨在在本地 Tomcat 中运行,并可靠地向远程 ActiveMQ 上的队列发送消息。
所有这些都到位,除了“可靠”。目前,如果远程站点出现故障,发送将严重失败。我的发送配置:
<!-- 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>
我认为我需要的是 connectionFactory(上面定义的第一个 bean)指向的本地持久代理,它知道远程代理(JMS 到 JMS 桥?)如果有明确的文档处理这个我很高兴被指出来,但我不得不拼凑起来,主要来自非常有帮助的BruceBlog。或者任何直接的帮助都会很棒。
谢谢
更新。一些修复:
- Eclipse 未正确找到 amq 命名空间。 This 是您找出故障原因的地方,而且很容易修复。
- 正如 Miklos 在下面的评论中所说,您的 webapp 库中需要 org.osgi.core-4.1.0.jar。从 ActiveMQ lib/optional 文件夹中获取它。
- 您还需要 Apache Commons xbean-spring-3.4.jar。得到它here。
- This 指南让我克服了接下来的几个障碍。这是完美的,除了在几个地方属性名称不正确(brokername 应该是 brokerName,physicalname 应该是physicalName)。
更新 2。我已经正确回答了,下面。不需要任何 amq 的东西!
【问题讨论】:
标签: spring tomcat spring-mvc jms activemq