`

在Spring中配置JMS

    博客分类:
  • jms
阅读更多

郁闷了三天,今天终于把JMS弄出来了,就是发送消息,然后消息监听器接收到了消息后发送邮件给管理员

先看web.xml里面关于activemq的invoke

<!--调用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弄出来了,就是发送消息,然后消息监听器接收到了消息后发送邮件给管理员

先看web.xml里面关于activemq的invoke

<!--调用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监听

<?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>
 

  <!--监听 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>

 

建立一个模拟的发送消息的bean,内容如下

final String mailContent = "新增单号为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);
        }

 

最后就是监听消息然后采取行动的bean


public class HelloMDP implements MessageListener {


 
 public void onMessage(javax.jms.Message arg0) {
  
  try   {  
            subAuthenticator   subauth   =   new   subAuthenticator("邮箱登陆名","密码");//smtp验证   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认证出错!");  
        }  
        catch   (MessagingException   e)   {  
            e.printStackTrace();
        }  
 
}

public   static   Properties   props   =   System.getProperties();
public   static   Session   session   =   null;  

/**  
*此内部类定义了smtp认证方法  
*/  
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);  
}  

分享到:
评论

相关推荐

    Spring整合JMS(四)——事务管理

    在Spring中配置JMS事务,我们需要在`ConnectionFactory`中开启事务支持,然后在`MessageListener`上声明事务。例如,我们可以使用`JmsTemplate`的`setSessionTransacted(true)`方法开启事务,或者在`...

    spring,weblogic配置jms

    3. **配置JMS配置文件**: 在Spring的配置文件中,你需要定义JMS相关的bean,如ConnectionFactory和Destination。例如,你可以使用`&lt;jee:jndi-lookup&gt;`标签来查找在WebLogic中创建的JMS资源。 ```xml ...

    Spring+Weblogic JMS

    5. **配置消息源和目的地**:在Spring配置中,为队列或主题创建bean,这些bean可以被`JmsTemplate`或`MessageListenerContainer`使用。 6. **发送和接收消息**:使用`JmsTemplate`可以方便地发送消息,而消息的接收...

    spring_jms

    在Spring JMS中,我们可以定义消息生产者和消费者作为bean,通过IoC容器进行实例化和配置。Spring提供了`MessageListenerContainer`接口,允许我们定义监听JMS消息的策略,例如基于`DefaultMessageListenerContainer...

    activemq与spring整合发送jms消息入门实例

    在Java世界中,ActiveMQ和Spring的整合是企业级应用中常见的消息中间件解决方案,用于实现JMS(Java Message Service)消息传递。本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的...

    Spring发送接收JMS消息

    Spring框架提供了一种简单而强大的方式来集成JMS,使得开发者可以轻松地在应用中实现异步通信和解耦。本篇文章将深入探讨如何使用Spring进行JMS消息的发送和接收。 ### 1. JMS概述 JMS是一种中间件协议,它定义了...

    spring-jms入门

    在Spring Boot项目中,通过添加相关依赖和配置,可以轻松启用Spring-JMS功能。Spring Boot提供了自动配置,简化了Spring-JMS的使用。 总的来说,Spring-JMS为开发者提供了一个强大且灵活的工具,用于构建基于JMS的...

    JMS入门小例子以及weblogic安装,并且在weblogic中配置JMS服务

    在描述中提到的接收端和发送端的部署步骤,主要是创建Spring配置文件(如`spring-jms.xml`)来管理JMS相关的bean,以及在`web.xml`中配置监听器以加载这些配置。这些配置文件定义了消息的生产者和消费者,以及它们...

    SpringJMS示例代码

    集成SpringJMS和ActiveMQ首先需要在Spring配置中定义ConnectionFactory和Destination(Topic或Queue)。ConnectionFactory是JMS客户端用来创建与消息服务器的连接的工厂,而Destination是消息的目的地。Spring的`...

    Java网络编程--基于Spring的JMS编程

    通过`PlatformTransactionManager`接口,可以配置JMS事务与Spring的其他事务管理器协同工作。 4. **消息转换**:Spring还提供了`MessageConverter`接口,用于在消息对象和应用程序对象之间进行转换,这在处理不同...

    JMS整合Spring实例

    在Spring的配置文件(如applicationContext.xml)中,我们需要配置JMS连接工厂、目的地(Topic或Queue)以及消息监听器容器。 ```xml &lt;bean id="jmsTemplate" class="org.springframework.jms.core....

    spring整合jms+activemq

    它提供了一种声明式的方式来配置JMS模板,使得开发者可以方便地发送和接收消息。此外,Spring还支持JMS监听器容器,使得消息的消费可以以非阻塞的方式进行,提高了系统的可扩展性和并发性能。 接下来,我们来看看...

    jms整合spring工程

    - **消息**:在JMS中,消息是数据传输的基本单位,包含要传递的信息。 - **消息队列(Message Queue)**:存储消息的临时容器,确保消息被正确地发送和接收。 - **生产者(Producer)**:创建并发送消息到消息...

    jms-spring.zip

    - **JMS配置**:在Spring配置文件中定义ConnectionFactory和Destination(队列或主题)。 - **ActiveMQ配置**:配置ActiveMQ服务器地址和端口,以及必要的安全设置。 3. **MessageTemplate**: - Spring的`...

    在spring boot中使用jms集成IBM-MQ和TLQ,包含普通队列和主题订阅两种模式,并实现按需加载

    1) 本工程主要演示在SPRING BOOT工程中怎样使用JMS集成IBM-MQ及TLQ两种消息中间件产品 2) 使用SPRING BOOT Conditional机制实现了两种产品按需加载,工程会根据配置文件开关动态加载 3) 实现了普通队列消息发送与...

    Spring-JMS把企业消息处理变容易.doc

    在Spring JMS中,`JmsTemplate`是核心组件,它有两种实现:JmsTemplate(基于JMS 1.1 API)和JmsTemplate102(基于JMS 1.0.2 API)。在示例应用程序中,通常会选择与目标JMS提供者兼容的版本。`JmsTemplate`通过回调...

    activemq spring 客户端配置

    当一个服务器不可用时,Spring配置的连接工厂会自动尝试连接到Zookeeper中标识的其他复制节点。 以上就是关于“activemq spring 客户端配置”的主要内容。通过这些步骤,你可以构建一个能够在Spring环境中与...

    JMS_Spring集成所需jar

    1. **配置JMS连接工厂** - 在Spring的配置文件中定义JMS连接工厂,如`&lt;bean id="jmsConnectionFactory" class="..."/&gt;`。 2. **定义消息监听容器** - 创建一个监听容器,如`&lt;jms:listener-container&gt;`,配置消费者...

    Spring集成JMS

    Spring集成JMS是Java消息服务(Java Message Service)与Spring框架的结合,它提供了一种在分布式系统中高效处理异步消息传递的方式。Spring通过其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect ...

Global site tag (gtag.js) - Google Analytics