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.