• 吴裕雄天生自然SPRING BOOTJMS实例


    JMS的自动配置
    
        Spring Boot对JMS的自动配置位于org.springframework.boot.autoconfigure.jms包下,支持JMS的实现有ActiveMQ和Artemis
    
        以ActiveMQ为例,Spring Boot为我们定义了ActiveMQConnectionFactory的Bean作为连接,并通过以“spring.activemq”为前缀的属性配置ActiveMQ的连接属性,主要包含:
    spring.activemq.broker-url= tcp://localhost:61616
    spring.activemq.user=
    spring.activemq.password=
    spring.activemq.in-memory=true
    
        另外,Spring Boot在JmsAutoConfiguration自动配置类中为我们配置了JmsTemplate;并且在JmsAnnotationDrivenConfiguration配置类中,为我们开启了注解式消息监听的支持,即自动开启@EnableJms。
    我们使用JMS的一种实现ActiveMQ讲解JMS实例。因此,需要事先安装ActiveMQ(注意需要安装jdk)。可访问http://activemq.apache.org/下载符合自己的ActiveMQ。解压缩即可完成安装。
        解压缩后,双击“apache-activemq-5.15.15\bin\win64”下的“wrapper.exe”或“activemq.bat”启动ActiveMQ,然后,通过“http://localhost:8161”运行ActiveMQ的管理界面,管理员账号和密码默认为admin/admin

     

     

     

     

    使用JMS的实现ActiveMQ进行两个应用系统间的点对点式通信
    
    1.创建基于Apache ActiveMQ5的Spring Boot应用ch8_1Sender(消息发送者)
    
    2.配置ActiveMQ的消息代理地址
    
    3.定义消息
    
    4.发送消息
    
    5.创建消息接收者(ch8_1Receive)
    
    6.定义消息监听器接收消息
    
    7.运行测试
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.sender</groupId>
        <artifactId>SpringBootSender</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <!-- 声明项目配置依赖编码格式为 utf-8 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <fastjson.version>1.2.24</fastjson.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    配置文件application.properties中,配置ActiveMQ的消息代理地址,具体如下:
    
    spring.activemq.broker-url= tcp://localhost:61616
    package com.ch.ch8_1sender;
    
    import java.util.ArrayList;
    import javax.jms.JMSException;
    import javax.jms.MapMessage;
    import javax.jms.Message;
    import javax.jms.Session;
    import org.springframework.jms.core.MessageCreator;
    
    public class MyMessage implements MessageCreator {
        @Override
        public Message createMessage(Session session) throws JMSException {
            MapMessage mapm = session.createMapMessage();
            ArrayList<String> arrayList = new ArrayList<String>();
            arrayList.add("陈恒1");
            arrayList.add("陈恒2");
            mapm.setObject("mesg1", arrayList);// 只能存Java的基本对象
            mapm.setString("mesg2", "测试消息2");
            return mapm;
        }
    }
    package com.ch.ch8_1sender;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.jms.core.JmsTemplate;
    
    @SpringBootApplication
    public class Ch81SenderApplication implements CommandLineRunner{
        @Autowired
        private JmsTemplate jmsTemplate;
    
        public static void main(String[] args) {
            SpringApplication.run(Ch81SenderApplication.class, args);
        }
    
        /**
         * 我们这里为了方便操作使用run方法发送消息, 当然完全可以使用控制器通过Web访问
         */
        @Override
        public void run(String... args) throws Exception {
            // new MyMessage()回调接口方法createMessage产生消息
            jmsTemplate.send("mydestination", new MyMessage());
        }
    }
    创建消息接收者
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.receiver</groupId>
        <artifactId>SpringBootReceiver</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <!-- 声明项目配置依赖编码格式为 utf-8 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <fastjson.version>1.2.24</fastjson.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    spring.activemq.broker-url= tcp://localhost:61616
    package com.ch.ch8_1receive;
    
    import java.util.ArrayList;
    import javax.jms.JMSException;
    import javax.jms.MapMessage;
    import org.springframework.jms.annotation.JmsListener;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ReceiverMsg {
        @JmsListener(destination = "mydestination")
        public void receiverMessage(MapMessage mapm) throws JMSException {
            @SuppressWarnings("unchecked")
            ArrayList<String> arrayList = (ArrayList<String>) mapm.getObject("mesg1");
            System.out.println(arrayList);
            System.out.println(mapm.getString("mesg2"));
        }
    }
    package com.ch.ch8_1receive;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Ch81ReceiveApplication {
        public static void main(String[] args) {
            SpringApplication.run(Ch81ReceiveApplication.class, args);
        }
    }

     

     

  • 相关阅读:
    BZOJ 3992: [SDOI2015]序列统计
    BZOJ 4836: [Lydsy1704月赛]二元运算
    2.Add Two Numbers
    [RN] React Native 调试技巧
    [商业世界] 商业三流:信息流、资金流、物流
    [杂谈] 记 程序员 对抗失眠烦恼的 大法
    [未来成长]让写作成为一种生活习惯
    [未来成长] 分享:《麦肯锡教我的写作武器》如何写出一篇具有逻辑表现力的文案
    [未来成长] 分享:在腾讯的八年,我的职业思考
    [PHP]:AES对称加密 -- 支持PHP7
  • 原文地址:https://www.cnblogs.com/tszr/p/15376468.html
Copyright © 2020-2023  润新知