You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by alexpeng <pe...@hotmail.com> on 2008/03/20 20:02:57 UTC
activemq5.0,why can not recieve failure message.
question:
After I send message, I recieve it, then email this message using
processMsgInfo() function.
after that, I disconnect the network,then send message,processMsgInfo has
error,because it can not connect email server, the system gives me
information that can not send. but the message i can not find it in
database. why?
I think it should be in database, when I reconnect network, the message
should be resend.
Is there some thing wrong with my configuration.
environment: activemq5.0, tomcat6, spring2.05. mysql5(localhost database)
applicationContext-jmx.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.org/config/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.org/config/1.0
http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd">
<bean id="connectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localhost" />
<property name="redeliveryPolicy">
<bean class="org.apache.activemq.RedeliveryPolicy">
<property name="backOffMultiplier" value="2" />
<property name="initialRedeliveryDelay" value="10" />
<property name="maximumRedeliveries" value="3" />
<property name="useExponentialBackOff" value="true" />
</bean>
</property>
</bean>
<bean id="msgDestination"
class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="myQueue" />
</bean>
<!-- Message converter bean -->
<bean id="msgConverter" class="com.golemur.jms.MsgMessageConverter" />
<!-- The JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean
class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory">
<ref local="connectionFactory" />
</property>
</bean>
</property>
<property name="defaultDestination" ref="msgDestination" />
<property name="messageConverter" ref="msgConverter"></property>
<property name="receiveTimeout" value="60000" />
</bean>
<!-- JMS transaction manager -->
<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<!-- DefaultMessageListenerContainer-->
<bean
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="msgDestination" />
<property name="concurrentConsumers" value="1" />
<property name="messageListener" ref="msgMdp" />
<property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/>
<property name="transactionManager" ref="jmsTransactionManager" />
<property name="receiveTimeout" value="-1"/>
</bean>
<!-- message sender beans -->
<bean id="msgMessageImpl" class="com.golemur.jms.MsgMessageImpl">
<property name="jmsTemplate" ref="jmsTemplate" />
<property name="destination" ref="msgDestination" />
</bean>
<bean id="messageProducer" class="com.golemur.jms.MessageProducer">
<property name="msgMessageImpl">
<ref bean="msgMessageImpl" />
</property>
</bean>
<!-- MessageMdp-->
<bean id="msgMdp" class="com.golemur.jms.MessageMdp" />
<!--
<bean id="pureMdp"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<property name="delegate" ref="msgMdp" />
<property name="defaultListenerMethod" value="processMsgInfo" />
<property name="messageConverter" ref="msgConverter" />
</bean>
-->
</beans>
applicationContext-jmx.xml this is for the broker
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.org/config/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://activemq.org/config/1.0
http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd">
<amq:broker useJmx="true" persistent="true">
<amq:persistenceAdapter>
<amq:jdbcPersistenceAdapter dataSource="#mysql-ds"/>
<!--
<journaledJDBC journalLogFiles="5"
dataDirectory="${basedir}/activemq-data" dataSource="#mysql-ds"/>
-->
</amq:persistenceAdapter>
<amq:transportConnectors>
<amq:transportConnector
uri="tcp://localhost:0?broker.persistent=true"/>
</amq:transportConnectors>
</amq:broker>
<!-- MySql DataSource Setup -->
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
</beans>
messageMDP.java for asychronized to recieve the message.
public void onMessage(Message message) {
try {
System.out.println("delivermode::" + message.getJMSDeliveryMode());
if (message.getJMSRedelivered()) {
log.error("This message was redelivered:" + message);
} else {
MapMessage mapMessage = (MapMessage) message;
mapMessage.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
MessageVO msg = new MessageVO();
msg.setMsgType(mapMessage.getString("msgType"));
msg.setFromUser(mapMessage.getString("fromUser"));
msg.setToUser(mapMessage.getString("toUser"));
msg.setMessage(mapMessage.getString("message"));
msg.setTime(mapMessage.getString("time"));
msg.setEmail(mapMessage.getString("email"));
msg.setTitle(mapMessage.getString("title"));
processMsgInfo(msg);
}
message.acknowledge();
} catch (JMSException e) {
log.error("Jms error:::" + e.getMessage());
} catch (Exception e) {
log.error("MsgInfo error:::" + e.getMessage());
}
}
thanks
Alex
--
View this message in context: http://www.nabble.com/activemq5.0%2Cwhy-can-not-recieve-failure-message.-tp16186330s2354p16186330.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.