郁悶了三天,今天終于把JMS弄出來(lái)了,就是發(fā)送消息,然后消息監(jiān)聽(tīng)器接收到了消息后發(fā)送郵件給管理員
先看web.xml里面關(guān)于activemq的invoke
<!--調(diào)用activemq -->
<context-param >
<param-name>brokerURI </param-name >
<param-value>/WEB-INF/activemq.xml </param-value >
</context-param>
<listener>
<listener-class>org.activemq.web.SpringBrokerContextListener</listener-class>
</listener>
郁悶了三天,今天終于把JMS弄出來(lái)了,就是發(fā)送消息,然后消息監(jiān)聽(tīng)器接收到了消息后發(fā)送郵件給管理員
先看web.xml里面關(guān)于activemq的invoke
<!--調(diào)用activemq -->
<context-param >
<param-name>brokerURI </param-name >
<param-value>/WEB-INF/activemq.xml </param-value >
</context-param>
<listener>
<listener-class>org.activemq.web.SpringBrokerContextListener</listener-class>
</listener>
然后是在上下文中定義的JmsTemplate和activemq監(jiān)聽(tīng)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--JMS Template-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616</value>
</property>
</bean>
</property>
<property name="defaultDestinationName" value="Hello.Queue"/>
</bean>
<bean id="activeMQContainer" class="org.activemq.jca.JCAContainer">
<property name="workManager">
<bean id="workManager" class="org.activemq.work.SpringWorkManager"/>
</property>
<property name="resourceAdapter">
<bean id="activeMQResourceAdapter"
class="org.activemq.ra.ActiveMQResourceAdapter">
<property name="serverUrl" value="tcp://localhost:61616"/>
</bean>
</property>
</bean>
<!--監(jiān)聽(tīng) Message 的Message Driven POJO-->
<bean id="HelloPlaceBean" class="com.officetao.jms.HelloMDP" autowire="byName"/>
<bean id="HelloMDP" factory-method="addConnector" factory-bean="activeMQContainer">
<property name="activationSpec">
<bean class="org.activemq.ra.ActiveMQActivationSpec">
<property name="destination" value="Hello.Queue"/>
<property name="destinationType" value="javax.jms.Queue"/>
</bean>
</property>
<property name="ref" value="HelloBean" />
</bean>
</beans>
建立一個(gè)模擬的發(fā)送消息的bean,內(nèi)容如下
final String mailContent = "新增單號(hào)為0000的訂單, 金額";
try {
if (jmsTemplate != null)
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session)
throws JMSException {
Message message = session.createMessage();
message.setStringProperty("content", mailContent);
return message;
}
});
}
catch (Exception e) {
logger.error("JMS error when place order:", e);
}
最后就是監(jiān)聽(tīng)消息然后采取行動(dòng)的bean
public class HelloMDP implements MessageListener {
public void onMessage(javax.jms.Message arg0) {
try {
subAuthenticator subauth = new subAuthenticator("郵箱登陸名","密碼");//smtp驗(yàn)證 authenticator
props.put("mail.smtp.host","smtp.163.com");
props.put("mail.smtp.auth","true");
session = Session.getInstance(props,subauth);
MimeMessage message = new MimeMessage(session);
message.setRecipient(Message.RecipientType.TO,new InternetAddress("接收郵件的郵箱"));
message.setFrom(new InternetAddress("自己的郵箱"));
message.setSubject("ok");
message.setText("if you see it,it works!");
Transport.send(message);
}
catch(AuthenticationFailedException e1){
System.out.println("SMTP認(rèn)證出錯(cuò)!");
}
catch (MessagingException e) {
e.printStackTrace();
}
}
public static Properties props = System.getProperties();
public static Session session = null;
/**
*此內(nèi)部類定義了smtp認(rèn)證方法
*/
public class subAuthenticator extends Authenticator{
private String userName;
private String password;
public subAuthenticator(String user,String pass){
userName=user;
password=pass;
}
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName,password);
}