我有一个正在发送关于使用ActiveMQ的一些事件JMS消息消息生产者。 但是,连接到ActiveMQ可能不会一直运行。因此,事件被存储,当连接建立时,它们被假设为被读取并被发送。这里是我的代码:JMS连接建立时如何捕获?
private void sendAndSave(MyEvent event) {
boolean sent = sendMessage(event);
event.setProcessed(sent);
boolean saved = repository.saveEvent(event);
if (!sent && !saved) {
logger.error("Change event lost for Id = {}", event.getId());
}
}
private boolean sendMessage(MyEvent event) {
try {
messenger.publishEvent(event);
return true;
} catch (JmsException ex) {
return false;
}
}
我想创建某种ApplicationEventListener当建立和处理未发送的事件连接将被调用。 我通过JMS,Spring框架和ActiveMQ的文件去也没有找到任何线索如何连接我的听众与连接工厂。
如果有人能帮助我,我会很感激。
这里是我的应用程序的Spring上下文说,大约JMS:
<!-- Connection factory to the ActiveMQ broker instance. -->
<!-- The URI and credentials must match the values in activemq.xml -->
<!-- These credentials are shared by ALL producers. -->
<bean id="jmsTransportListener" class="com.rhd.ams.service.common.JmsTransportListener"
init-method="init" destroy-method="cleanup"/>
<bean id="amqJmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${jms.publisher.broker.url}"/>
<property name="userName" value="${jms.publisher.username}"/>
<property name="password" value="${jms.publisher.password}"/>
<property name="transportListener" ref="jmsTransportListener"/>
</bean>
<!-- JmsTemplate, by default, will create a new connection, session, producer for -->
<!-- each message sent, then close them all down again. This is very inefficient! -->
<!-- PooledConnectionFactory will pool the JMS resources. It can't be used with consumers.-->
<bean id="pooledAmqJmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory" ref="amqJmsConnectionFactory" />
</bean>
<!-- Although JmsTemplate instance is unique for each message, it is -->
<!-- thread-safe and therefore can be injected into referenced obj's. -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg ref="pooledAmqJmsConnectionFactory"/>
</bean>
您需要详细说明您的设置。你使用故障转移运输等? – 2013-04-25 13:59:02
我已将Spring应用上下文添加到了我的原始消息中。 – 2013-04-25 17:50:07
因为它省略了连接URI,所以它仍然没用。 – 2013-04-25 19:38:05