轉載:http://www.dev26.com/blog/article/137web
web開發站中的郵件發送使用了activemq我這是從網上找的進行了一些修改,記錄下來,爲了不發送郵件時程序對用戶操做的阻塞,使用ActiveMQ來 實現JMS傳送和接收。
首先,咱們在Spring中加入ActiveMQBroker的配置:spring
<bean id="broker" class="org.apache.activemq .xbean.BrokerFactoryBean"> <property name="config" value="classpath:activemq .xml" /> <property name="start" value="true" /> </bean>
咱們在此處配置了BrokerFactoryBean,此Bean實如今Spring中配置嵌入式Broker,而且支持XBean方式的配 置。Broker的配置文件由config屬性指定,此處定義配置文件位於classpath中的activemq.xml。
接下來咱們須要建立Broker的配置文件activemq.xml。其實咱們 不須要從頭配置,展開ActiveMQ的jar包,在org.apache.activemq.xbean下,就有一個activemq.xml, 咱們將其拷貝到WEB-INF/classes/目錄下,並進行修改。
下面是activemq.xml的內容:數據庫
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" 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-3.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" /> <broker useJmx="false" persistent="false" xmlns="http://activemq.apache.org/schema/core"> <transportConnectors> <transportConnector uri="tcp://localhost:61616"/> </transportConnectors> </broker> </beans>
在spring中的配置中設置bean:apache
<bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean"> <property name="config" value="/WEB-INF/activemq.xml" /> <property name="start" value="true" /> </bean> <!-- 配置connectionFactory --> <!-- 配置JMS鏈接工廠 --> <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> </bean> <!-- 發送消息的目的地(一個隊列) --> <bean id="jmsDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="MY.queue"></constructor-arg> </bean> <!-- JMS listener wrapper --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="destination" ref="jmsDestination" /> <property name="messageListener" ref="messageHandler" /> </bean>
在broker中,咱們指定了不開啓JMX,而且不使用持久化(persistent=」false」)。
若是不對消息進行持久化存儲,在容器或者JVM關閉、重啓,或者崩潰後,全部的消息都將丟失,在咱們的業務中,對於發送密碼更改通知郵件,並 非是重要的功能,因此咱們選擇不使用持久化存儲,但對於不一樣業務邏輯,可能會須要進行持久化存儲。ActiveMQ提 供的持久化存儲方案能夠將消息存儲到文件系統、數據庫等。
要在Broker中開啓持久化存儲,須要設置persistent爲true,而且對其子節點persistenceAdapter, journaledJDBC進行配置。ActiveMQjar包中的activemq.xml有被註釋掉的示例,能夠參考。app