zoukankan      html  css  js  c++  java
  • ActiveMQ服务器之间传输对象,项目A发送对象到项目B接收发送对象《二》

    ActiveMQ服务器之间传输对象,项目A发送对象到项目B接收发送对象《一》

    上一篇文章写到对象之间传输使用线程方式 ,无法使用监听方式,最近解决了使用监听方式接收对象,本次使用配置文件方式,贴出代码供大家参考

    发送端:

    public void send(User user) {
            // 将user对象进行传递, 0620 ypr
            String path = UserController.class.getClassLoader().getResource("/")
                    .getPath();
            System.out.println(path);
            ApplicationContext applicationContext = new FileSystemXmlApplicationContext(
                    path + "applicationContext.xml");
            JmsTemplate template = (JmsTemplate) applicationContext
                    .getBean("jmsTemplate");
            Destination destination = (Destination) applicationContext
                    .getBean("destination");
     
            // 将user中信息 加到 不可变的userNew中,进行传递 0620 ypr
            final User userNew = new User();
            userNew.setLoginName(user.getLoginName());
            userNew.setSign("1");
            
            // 消息发送 将userNew发送 0620 ypr
            template.send(destination, new MessageCreator() {
                public Message createMessage(javax.jms.Session session)
                        throws JMSException {
                    return session.createObjectMessage(userNew);
                }
            });
            System.out.println("成功发送了一条消息");
        }

    发送端配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-2.5.xsd"
        default-autowire="byName">
     
         <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://localhost:61616" />
            <property name="userName" value="admin" />
            <property name="password" value="admin" />
        </bean>
     
        <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
            <property name="connectionFactory" ref="connectionFactory" />
        </bean>
     
        <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">
            <!-- 设置消息队列的名字 -->
            <constructor-arg index="0" value="STATUS" />
        </bean> 
    </beans>

    接收端:

    /**
     * 监听接收消息   0620 ypr 
     * @author Administrator
     *
     */
    public class ConsumerMessageListener implements MessageListener {
     
        @Override
        public void onMessage(Message message) {
            // TODO Auto-generated method stub
            System.out.println("ddddddd");
            System.out.println("topic收到的消息:" + message);
            MessageService messageService = (MessageService)ApplicationContextHandle.getBean("messageService");
            try {
                //将接收到的对象强制转换为user 对象  0620 ypr 
                User user = (User) ((ObjectMessage) message).getObject();
                String id=user.getId();
                List<User> list=messageService.getId(id);
                if (message != null){
    //                for(int i=0;i<list.size();i++){
                        if(list.size() ==0 && user.getSign().equals("1")){
                            // User s = (User) message.getObject();
                            System.out.println("收到的消息对象:" + user.getLoginName());
                            user.setCreateBy(new User("1"));
                            user.setUpdateBy(new User("1"));
                            //使用getbean 方式获取 systemService   0620 ypr 
                            
                            //新增 user对象
                            messageService.xinZeng(user);
                        }else if(list.size()!=0 && user.getSign().equals("1")){
                            System.out.println("收到的消息对象:" + user.getLoginName());
                            messageService.xiuGai(user);
                        }else if(user.getSign().equals("2")){
                            System.out.println("收到的消息对象:" + user.getLoginName());
                            messageService.shanChu(user);
                        }
                    }
    //            }
     
            } catch (JMSException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:task="http://www.springframework.org/schema/task" 
        xmlns:util="http://www.springframework.org/schema/util"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/task 
        http://www.springframework.org/schema/task/spring-task-3.0.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-2.5.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
        http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
        http://cxf.apache.org/transports/http/configuration    
        http://cxf.apache.org/schemas/configuration/http-conf.xsd">
     
     
     
        <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://localhost:61616" />
            <property name="userName" value="admin" />
            <property name="password" value="admin" />
        </bean>  
     
        <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
            <property name="connectionFactory" ref="connectionFactory" />
        </bean>
     
        <bean id="mqDestination" class="org.apache.activemq.command.ActiveMQTopic">
            <!-- 设置消息队列的名字 -->
            <constructor-arg index="0" value="STATUS" />
        </bean>
        
        <!-- 设置监听路径  0620 ypr  -->
        <bean id="messageListener" class="com.thinkgem.jeesite.modules.sys.listener.ConsumerMessageListener"></bean>
     
        <bean id="listenerContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer">
            <property name="connectionFactory" ref="connectionFactory" />
            <property name="destination" ref="mqDestination" />
            <property name="messageListener" ref="messageListener" />
        </bean> 
    </beans>

    web.xml配置

    <!-- Context ConfigLocation  -->
        <!-- 扫描applicationContext.xml 0620 ypr -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/spring-context*.xml,classpath*:/applicationContext.xml</param-value>
        </context-param>
  • 相关阅读:
    mongodb备份与恢复
    MongoDB-3.4安装文档
    (转)Zabbix 3.2.7编译安装记录
    (转)error while loading shared libraries:libmysqlclient.so.18 错误
    (转)如何使用Journalctl查看并操作Systemd日志
    (转)基于CentOS 7安装Zabbix 3.4和Zabbix4.0
    (转)yum安装MariaDB(使用国内镜像快速安装,三分钟安装完毕)
    (转)nmon和nmon analyser的下载和使用
    (转)Db2 数据库常见堵塞问题分析和处理
    (转)我是一个线程
  • 原文地址:https://www.cnblogs.com/yypr/p/9777790.html
Copyright © 2011-2022 走看看