JMS的资料网上很多,通过JMS可以异步发送邮件避免用户等待单一线程完成,提升用户体验。ActiveMQ是开源的JMS框架,比较简单就能上手。
搞了半天终于把在Spring container 下通过JMS发送邮件搞定了,有个destinationName没有配对,搞了半天,如果有人也在做这方面有问题的, 一起交流交流。
<bean id="simpleMailMessageConverter" class="com.ta.te2.util.jms.SimpleMailMessageConverter"></bean>
<!-- <bean id="mimeMessageConverter" class="com.ta.te2.util.jms.MimeMessageConverter"></bean> -->
<!-- <bean id="mimeMessagePreparatorConverter" class="com.ta.te2.util.jms.MimeMessagePreparatorConverter"></bean> -->
<bean id="simpleMailSendingTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory"></property>
</bean>
</property>
<property name="[color=red]defaultDestinationName[/color]" value="emailQueue"></property>
<property name="messageConverter" ref="simpleMailMessageConverter"></property>
</bean>
<bean id="simpleMailSendingListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.ta.te2.util.jms.MailMessageHandlerImpl">
<property name="mailSender" ref="pooledMailSender"></property>
</bean>
</constructor-arg>
<property name="defaultListenerMethod" value="sendingEmail"></property>
<property name="messageConverter" ref="simpleMailMessageConverter"></property>
</bean>
<bean id="simpleMaillistenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="concurrentConsumers" value="5"></property>
<property name="connectionFactory" ref="jmsConnectionFactory"></property>
<property name="[color=red]destinationName[/color]" value="emailQueue"></property>
<property name="messageListener" ref="simpleMailSendingListener"></property>
</bean>
<bean id="simpleMailSendingProducer" class="com.ta.te2.util.jms.MailMessageSenderProducer">
<property name="jmsTemplate" ref="simpleMailSendingTemplate"></property>
<property name="mailSender" ref="javaMailSender"></property>
</bean>
搞了半天终于把在Spring container 下通过JMS发送邮件搞定了,有个destinationName没有配对,搞了半天,如果有人也在做这方面有问题的, 一起交流交流。
<bean id="simpleMailMessageConverter" class="com.ta.te2.util.jms.SimpleMailMessageConverter"></bean>
<!-- <bean id="mimeMessageConverter" class="com.ta.te2.util.jms.MimeMessageConverter"></bean> -->
<!-- <bean id="mimeMessagePreparatorConverter" class="com.ta.te2.util.jms.MimeMessagePreparatorConverter"></bean> -->
<bean id="simpleMailSendingTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory"></property>
</bean>
</property>
<property name="[color=red]defaultDestinationName[/color]" value="emailQueue"></property>
<property name="messageConverter" ref="simpleMailMessageConverter"></property>
</bean>
<bean id="simpleMailSendingListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.ta.te2.util.jms.MailMessageHandlerImpl">
<property name="mailSender" ref="pooledMailSender"></property>
</bean>
</constructor-arg>
<property name="defaultListenerMethod" value="sendingEmail"></property>
<property name="messageConverter" ref="simpleMailMessageConverter"></property>
</bean>
<bean id="simpleMaillistenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="concurrentConsumers" value="5"></property>
<property name="connectionFactory" ref="jmsConnectionFactory"></property>
<property name="[color=red]destinationName[/color]" value="emailQueue"></property>
<property name="messageListener" ref="simpleMailSendingListener"></property>
</bean>
<bean id="simpleMailSendingProducer" class="com.ta.te2.util.jms.MailMessageSenderProducer">
<property name="jmsTemplate" ref="simpleMailSendingTemplate"></property>
<property name="mailSender" ref="javaMailSender"></property>
</bean>