spring boot(学习笔记第十七课)

news2024/11/14 17:06:53

spring boot(学习笔记第十七课)

  • Spring boot的Apache ActiveMQ

学习内容:

  • Spring boot的Apache ActiveMQ

1. Spring boot的Apache ActiveMQ

  1. 什么是JMS(Java Message Service)
    JMS(Java Message Service)就是Java消息服务,它统一了JavaAPI标准,多个客户端都可以通过JMS(Java Message Service)进行连接交互,JMS(Java Message Service)提供两种模式:
    * 点对点模式
    * 发布者/订阅者模式
    在这里插入图片描述

  2. 安装Apache ActiveMQ

    • Apache ActiveMQ是AMS服务的一个实现,这里尝试使用点对点模式。
    • 这里使用centos下进行安装,首先保证Java
      [root@master bin]# java -version
      openjdk version "1.8.0_412"
      OpenJDK Runtime Environment (build 1.8.0_412-b08)
      OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
      
      如果centos上没有Java,事前安装。
      yum install java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
      
      设置JAVA_HOME
      vim ~/.bashrc
      export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jre
      
    • 继续下载Apache ActiveMQ
      这里Java的版本是Java 8,所以最高的支持版本就是5.16.3
      Apache ActiveMQ 5.16.3
    • 使用root账号进行解压缩,以及安装。
      例如,使用/root/activemq进行安装。
      tar zxvf /root/activemq/apache-activemq-5.16.3-bin.tar.gz
      
    • 修改conf/jetty.xml
      这里如果不修改,windows将不会连接上ActiveMQ
      vim /root/activemq/apache-activemq-5.16.3/conf/jetty.xml
      
      jetty.xml为如下位置需要修改。这里127.0.0.1修改为0.0.0.0
      <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
      	<!-- the default port number for the web console -->
      	<property name="host" value="0.0.0.0"/>
      	<property name="port" value="8161"/>
      </bean>
      
    • 启动ActiveMQ
      cd /root/activemq/apache-activemq-5.16.3/bin
      ./activemq start
      
    • 检查ActiveMQ的默认端口8161监听状况
       netstat -tuln |grep 8161
      
      发现有进程在监听,说明启动正常。
    • windows进行测试。
      使用http://IP地址:8161进行连接,默认的用户名和密码都是admin
      在这里插入图片描述
  3. 配置Spring bootweb应用进行消息的发送。

    • 增加ActiveMQ的依赖
        <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
      
    • 配置指向ActiveMQ server的连接
      spring.activemq.broker-url=tcp://192.168.12.132:61616
      spring.activemq.user=admin
      spring.activemq.password=admin
      spring.activemq.packages.trusted=com.example.demo.entity,java.util
      
      注意spring.activemq.packages.trusted这里特别重要,需要指定传递的可信任自定义Message class所在的package
      其他的设定都是连接ActiveMQ的连接信息。
    • 创建ActiveMQQueue
      public class DemoApplication {
      
      	public static void main(String[] args) {
      		SpringApplication.run(DemoApplication.class, args);
      	}
      
      	@Bean
      	Queue queue(){
      		return new ActiveMQQueue("amq");
      	}
      }
      
  4. 配置Spring bootweb应用进行消息的监听。

    @Component
    public class JmsComponent {
        @Autowired
        JmsMessagingTemplate jmsMessagingTemplate;
    
        @Autowired
        Queue queue;
    
        @JmsListener(destination = "amq")
        public void receive(Message message){
            System.out.println("receiving:" + message);
        }
    }
    
  5. 配置Message类。

    @Data
    public class Message implements Serializable {
        private String name;
        private String content;
        private Date date;
    }
    

    注意:

    • 这里必须实现Serializable接口
    • application.properties里面,必须设定信任的message类所在的package,spring.activemq.packages.trusted=com.example.demo.entity,java.util
    • 这里,指定了com.example.demo.entity的基础上,还需要指定内部成员变量类型java.util.date

    至此位置,接收端(consumer)可以接收到queue(amq)发送过来的message

  6. 配置发送端

    @Controller
    public class ActiveMQController {
       @Autowired
       JmsMessagingTemplate jmsMessagingTemplate;
    
       @Autowired
       Queue queue;
       @GetMapping("/sendJms")
       @ResponseBody
       public String sendJmsMessage(){
           Message message = new Message();
           message.setContent("hello,ativemq");
           message.setDate(new Date());
           message.setName("greet");
           jmsMessagingTemplate.convertAndSend(queue,message);
           return "OK";
       }
    }
    
  7. 启动发送端(producer)
    使用intellJ启动web server作为producer进行消息发送。使用端口8080在这里插入图片描述

  8. 启动接收端(consumer)

    • 将应用程序进行mvn package,进行打包jar包。
      正常的情况下发送端应用程序和接收端应用程序应该是两个spring boot的应用程序,这里为了方便,写在一起,但是启动的时候分别是8080端口(发送端)和9090端口(接收端) 在这里插入图片描述
      使用git bashjava命令,启动web server作为producer进行消息发送。使用端口9090
      在这里插入图片描述
      java -jar demo-0.0.1-SNAPSHOT.jar --server.port=9090
  9. 利用get请求进行发送message
    在这里插入图片描述

  10. 查看接收端控制台,对message接收情况进行检查
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fultter项目中IOS打包问题整理(附带解决方案)

Fultter项目中IOS打包问题整理&#xff08;附带解决方案&#xff09; 问题一&#xff1a;CocoaPods 在你的项目中找不到名为 AlicloudPush 版本为 ~> 1.9.1 的 Pod 规范。报错信息问题分析解决方法 问题二&#xff1a;ruby版本问题报错信息问题分析问题原因解决方法 问题三&…

squeeze()和unsequeeze()函数的作用

sequeeze(dim):用于在指定位置添加一个大小为1的新维度 例如&#xff1a; 其他的大家自行尝试&#xff01; squeeze()&#xff1a;squeeze函数用于去除张量中所有大小为1的维度,注意当没有传入任何参数的时候&#xff0c;去掉的是所有大小为1的维度。 例如&#xff1a;

力扣第五十九题——螺旋矩阵II

内容介绍 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&#xff1a;n 1 …

基于SpringBoot的网络海鲜市场系统的设计与实现

TOC springboot219基于SpringBoot的网络海鲜市场系统的设计与实现 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大&#xff0c;人为计算方面才是一个巨大的短板&#xff0c;所以发明了各种计算设备&#xff0c;从结绳记事&#xff0c;到算筹&#xff0c;以及算盘&…

【ubuntu24.04】远程开发:微软RDP;ssh远程root登录;clion以root远程

本地配置了一台ubutnu服务器,运行各种服务。偶尔会远程过去,做一些UI操作。感觉nomachine的就是会模糊一些,可能是默认的编码比较均衡?RDP更清晰? RDP 与nomachine比,更清晰,但是貌似不支持自动缩放窗口?默认的配置就比较高:GPT的建议 安装xrdp还要配置session:1. 安…

从零开始搭建k8s集群详细步骤

声明&#xff1a;本文仅作为个人记录学习k8s过程的笔记。 节点规划&#xff1a; 两台节点为阿里云ECS云服务器&#xff0c;操作系统为centos7.9&#xff0c;master为2v4GB,node为2v2GB,硬盘空间均为40GB。&#xff08;节点基础配置不低于2V2GB&#xff09; 主机名节点ip角色部…

链表(linked_list)的理解以及实现

链表的概念&#xff1a; 链表是一种线性数据结构&#xff0c;其中的每个元素都是一个节点对象&#xff0c;各个节点通过“引用”相连接。引用记录了下一个节点的内存地址&#xff0c;通过它可以从当前节点访问到下一个节点。 可以看出&#xff1a;链表物理结构不是连续的 链…

在Ubuntu 13.10上安装Hadoop的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 先决条件 本教程的唯一先决条件是安装了 Ubuntu 13.10 x64 的 VPS。 您需要通过以下两种方式之一在命令行中执行命令&#xff1a; 使用…

AI芯片:高性能卷积计算中的数据复用

随着深度学习的飞速发展&#xff0c;对处理器的性能要求也变得越来越高&#xff0c;随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算&#xff0c;本文分析了高性能卷积计算中的数据复用&#xff0c;这是AI芯片设计中需要优化的重点之一&a…

XSS游戏前五关

分享一个XSS游戏的链接 XSS Game 第一关&#xff1a; 这边有一个innerHTML属性&#xff0c;我们查看官方文档 我们找到了它存在的漏洞&#xff0c;直接利用 https://sandbox.pwnfunction.com/warmups/ma-spaghet.html?somebody<img src1 onerror"alert(1337)&quo…

工具推荐篇:《Chat-PPT一键AI生成专属风格演示文稿》

引言 在当今快节奏的工作环境中&#xff0c;制作高质量的演示文稿既是一项挑战也是一门艺术。传统的PPT制作往往需要花费大量的时间和精力&#xff0c;尤其是在寻找合适的模板、设计布局和选择色彩搭配等方面。 今天给大家推荐一款AI一键制作高质量PPT的工具。 AI如何改变PP…

CANoe软件中Trace窗口的筛选栏标题不显示(空白)的解决方法

文章目录 问题描述原因分析解决方案扩展知识总结问题描述 不知道什么情况,CANoe软件中Trace窗口的筛选栏标题突然不显示了,一片空白。现象如下: 虽然不影响CANoe软件的使用,但是观感上非常难受,对于强迫症患者非常不友好。 原因分析 按照常规思路,尝试了: 1、重启CAN…

8月强化|30天带刷张宇18讲核心重点!

不偏不难就不是张宇了&#xff01; 张宇老师本来就以“偏难怪”著称&#xff0c;无独有偶&#xff0c;24考研真题也是“偏难怪”&#xff01; 所以&#xff0c;24考研结束之后&#xff0c;大家欧鼓吹张宇「封神」 先不说张宇老师是不是真的符合考研的趋势&#xff0c;但是跟…

解决 git clone 失败问题

使用 git clone 指令&#xff0c;从 G i t H u b GitHub GitHub克隆项目时失败&#xff0c;提示信息为&#xff1a; fatal: unable to access https://github.com/***/***: Failed to connect to github.com port 443 after 21083 ms:Couldnt connect to server解决方法 出现…

Chromium编译指南2024 - Android篇:从Linux版切换到Android版(六)

1.引言 在前面的章节中&#xff0c;我们介绍了如何获取 Chromium for Android 的源代码。然而&#xff0c;您可能已经在本地拥有了用于 Linux 版的 Chromium 源代码&#xff0c;并希望切换到 Android 版进行编译和开发。为了避免重新拉取大量的代码&#xff0c;您可以通过配置…

趋动科技成为GSMA 5G IN创新会员,专注于软件定义AI算力技术

趋动科技 趋动科技作为软件定义AI算力技术的领导厂商&#xff0c;专注于为全球用户提供国际领先的数据中心级AI算力虚拟化和资源池化软件及解决方案。趋动科技的 OrionX AI 算力资源池化软件能够帮助用户提高资源利用率和降低TCO&#xff0c;提高算法工程师的工作效率。凭借标…

谷歌、火狐、Edge浏览器使用allWebPlugin中间件加载ActiveX控件

安装allWebPlugin中间件 1、请从下面地址下载allWebPlugin中间件产品 链接&#xff1a;百度网盘 请输入提取码百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百…

数据结构与算法分析winform算术表达式求值计算

数据结构与算法分析算术表达式求值计算 数据结构与算法分析 实验三 算术表达式求值计算 要求&#xff1a;创建Form窗体&#xff0c;输入算术表达式&#xff0c;计算出表达式结果。 基本思路&#xff1a; &#xff08;1&#xff09;将表达式串拆分成操作数和操作符混合的字符…

【数据结构】使用C语言建立邻接矩阵表示有向图

有向图的邻接矩阵构建 有向图的定义 先回顾下有向图的定义&#xff1a; 有向图是一副具有方向性的图&#xff0c;是有一组顶点和一组有方向的边组成的&#xff0c;每条方向的边都连接着一对有序的顶点。 有向图的邻接矩阵的特点 有向图邻接矩阵中第i行非零元素的个数为第i个顶…

背部筋膜炎怎么根治

背部筋膜炎是一种常见的疾病&#xff0c;背部筋膜炎的症状主要包括&#xff1a; 1、疼痛&#xff1a;这是背部筋膜炎最明显的症状&#xff0c;疼痛可表现为酸痛、胀痛或刺痛&#xff0c;轻重不一。疼痛通常在劳累后加重&#xff0c;休息后减轻。 2、僵硬&#xff1a;由于无菌…