activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From alexpeng <penzhen...@hotmail.com>
Subject Re: activemq5.0,why can not recieve failure message.
Date Fri, 21 Mar 2008 06:09:46 GMT

after analysing it step by step, I found the message has been insert into
database. but after that, System

give follow error messages, and then I browse the database, the record was
deleted. 

[org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] ERROR
MessageMdp:52 - Mail server connection failed; nested exception is
javax.mail.MessagingException: Exception reading response;
  nested exception is:
	java.net.SocketException: Connection reset


So, I am sure that this connection reset cleans the database. how could I
protecte it from deleting the data from database. 

I think this is activemq's error.


alexpeng wrote:
> 
> 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.-tp16187248s2354p16194291.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.


Mime
View raw message