SpringBoot与消息-上手RabbitMQ

springboot应用redis实现分布式队列订阅监听服务 redis提供了redis列表这种轻量级的队列订阅监听服务, redis队列的特点 1相对于kafka等队列消息服务,redis队列由于是基于内存操作,所以速度更快 2处理的数据量不如kafka大 3在一些异常场景下可能会丢失消息。 springboot实现redis队列订阅监听 pom文件 <dependency> <groupId>org.s... 阅读详情

背景

  开局一只狗,介绍是少不了的,那么对于我这种渣渣来说,看源码,ctry+左键,翻得翻得好像搞明白源码的流程了,再回头yy,咦?我清楚的有那一个步骤来着,是干啥来着???就很难受,不得不面对真实的自己,不哔哔了,淦!

一个故事:异步处理

  淦之前还得哔哔一个故事:

    脑补这个一个场景,我要注册一个网站的会员,按他们的流程是:用户注册后给发一份邮件、给用户发优惠券、发糖、发小板凳。。。一系列操作

    如果我是开发者,是不是有这么几个思想:
      1:用户注册后,直接调用发邮件、发糖、发小板凳等等一系列操作,统统一下子都执行,执行完成后给用户true。
      2:用户注册后,利用多线程的方式,并发执行操作,操作完告诉用户true。
      3:用户注册后,把后续任务写入消息队列成功,给用户true,然后程序默默的执行一系列操作或者多线程执行。

    相比之下,那绝对是第三种方式体验贼棒啊,响应速度相比第一种和第二种快了N倍,现在这个流量时代,抓不住用户的喜好,就与用户无缘。

一个故事:应用解耦

  订单与库存:订单系统处理完之后直接请求库存系统,进行库存商品自减,像是连体婴

  方案:订单系统只管下命令,不直接找库存系统了,而是发到消息队列,库存系统去消息队列取任务,双方谁也不紧张。

一个故事:流量削峰

  十万个人同时要抢诺亚方舟的船票,可票只有10张,我的系统不可能判断十万次请求,一个个跑订票的业务逻辑。
  消息队列:你尽管抢,我消息队列只存100个请求,剩下的9万9千9百请求直接返回抢票失败,也就不进订票的业务,剩下的100个请求再慢慢研究谁是最后10名幸运儿。

    例子有些激进,主要理解消息队列和名词。

概述

  消息服务中两个重要概念:
    1:消息代理:消息发送者发送消息后,由消息代理接管,消息代理保证消息传递到指定目的地。
    2:目的地:消息队列主要有两种形式的目的地,队列(点对点)和主题(发布/订阅)

  点对点式:
    A发送消息到消息代理,B可以从消息代理取出消息,然后消息代理里的消息就没了。当然不止是B可以拿消息,也可以有C、D…如果A拿走了消息,别人就拿不到了。这个拿走就叫消费。大白话,蟹堡王门口N个人排队,但只有一个蟹黄堡,派大星吃掉这个蟹黄堡后,别人就只有饿肚子。

  发布/订阅式:
    wx公众号,关注了公众号之后,他发任何消息,关注者都会收到

消息代理规范

  JMS (Java Message Service):Java提供的消息服务

  AMQP(Advanced Message Queuing Protocol):高级消息队列,兼容JMS,RabbitMQ是AMQP的实现。

RabbitMQ简介

  RabbitMQ消息队列嘛,它是erlang开发的AMQP的开源实现,用来解决上边说的几种业务场景。这个erlang就很神奇,之前我有个win虚拟机,给装过RabbitMQ,过了好久,找的时候发现找不见了,怀疑有没有装过,后来才发现一个叫erlang的文件夹。。。

核心概念

   1.Message:消息,由消息头和消息体组成。消息体不透明,消息头类似http请求头,不过参数不一样,可以这么理解。其中头里边重要的是routing-key(路由键)、priority(相对于其它消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)

  2.Publisher:消息的生产者,也是一个向交换器发布消息的客户端应用程序。

  3.Exchange:交换器,用来接收生产者发送的消息,并把这些消息路由给服务器中的队列。它有四种类型:direct(默认)、fanout、topic、headers,direct是点对点式的,其它的是发布/订阅式的,策略不一样。交换器根据消息头的路由键来指定消息该去哪。

  4.Queue:消息队列,用来保存消息直接发送给消费者。它是消息的容器,一个消息可以投入一个或多个队列。消息一直在队列里,等待消费者过来把它取走。

  5.Binding:绑定,消息队列与交换器之间的关联。就是 根据路由键派发消息到哪个消息队列的规则。绑定规则可以是多对多的关系。

  6.Connection:网络连接,比如一个TCP连接。

  7.Channel:信道,比如TCP建立连接后,不可能有多条,因为太耗费资源了,所以信道就是说,在一个连接里开辟多条通道,信道才是真正发送消息、接收消息。。。用的

  8.Consumer:消息的消费者,从消息队列取消息的

  9.Virtual Host:虚拟主机,表示一批交换器、消息队列和相关对象。每个虚拟主机相当于mini版RabbitMQ服务器,相互隔离,有自己完整的一套队列、交换器、绑定、权限机制。必须在连接时指定,RabbitMQ默认的vhost是“/”(斜杠)。也可以这么理解,虚拟主机就是多个相互隔离的RabbitMQ服务器。

  10.Broker:代理,就是消息队列服务器实体

  关系图
关系图

RabbitMQ运行机制

  消息是如何抵达队列的?

  首先,生产者创建出一个消息,发给消息队列服务器,但是首先抵达的是队列服务器里的交换器,交换器根据这个消息的路由键,把它派发到某队列,派发规则就叫绑定,而且可以是多对多的关系(一个交换器可以绑定好多队列,一个队列也可以被多个交换器绑定)。那么核心也就可想而知,就是交换器和绑定规则。

  交换器(Exchange)

  Exchange分发消息时,根据类型的不同分发策略也有区别。目前共有四种类型:direct、fanout、topic、headers。headers匹配的是消息的header而不是路由键,与direct完全一致,但性能差很多,所以直接看另外三种就可以了。

  1.Direct Exchange:典型的点对点通信模型(单播),当路由键与绑定的键一模一样的时候派发给相应队列。举个栗子,比如有三个消息队列,分别是cat、cat.eat、cat.sleep,当路由键是cat的时候,只会给cat这个消息队列发送消息。

  2.Fanout Exchange:广播模式,还是那三个队列,不管路由键是啥,这三个队列都会收到发来的消息。这个是发消息最快的,也是发布/订阅模型的参考实现。

  3.Topic Exchange:还是那三个队列,队列允许模糊匹配,符号是#和*,#匹配0个或多个单词,*匹配一个单词,比如cat.#、#.cat。完成有选择性的广播通信。

RabbitMQ安装

  1.移驾centos7,xshell连上
  2.查看镜像,是否有RabbitMQ:

docker images

  3.没安装过肯定没有,所以去dockerhub一趟,搜下,并确定要安装的版本,推荐安装tag带manager的,因为带管理界面。然后docker pull,找国内镜像加速站加速

//不加速
docker pull rabbitmq:3.8.9-management-alpine
//加速
docker pull 3laho3y3.mirror.aliyuncs.com/library/rabbitmq:3.8.9-management-alpine

  4.再看下镜像:这次肯定有了

docker images

  5.然后启动运行镜像,-d代表后台运行,带管理界面的RabbitMQ有两个端口,分别是5672和15672,-p暴露端口,把主机的5672映射到docker容器的5672,15672同理,–name是给起个名字,后边跟上容器id。顺便看一下运行没。看到运行了就可以尝试访问管理界面,默认账号密码都是guest。

docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 5c00f781d2c7

登录成功界面

RabbitMQ界面操作(创建交换器、消息队列、 绑定关系)

  访问成功后,继续看界面,上边一排6个菜单,点到交换器,人家默认有7个交换器,先不管他,自己新建上边说的那三种类型的交换器,注意Durability选项,意思是持久化,如果是持久化,下次重启RabbitMQ这个交换器还在,不持久化重启后就没这个交换器了。
在这里插入图片描述
新建的三个交换器

  交换器建好后,点到队列建4个消息队列。

队列
  交换器和队列都建好之后,点到交换器搞绑定关系,进入dirct,填写to queue,Routing key(路由键)完成绑定,绑定如下图

在这里插入图片描述
  进入fanout,绑定如下图,因为是广播,所以路由键可有可无。
fanout绑定
  进入topic,用#、*匹配,绑定如下图。
topic绑定规则

RabbitMQ消息测试

  接下来进行测试。
  Drict测试
  先进入dirct,写路由键和信息,publish message
dirct发送消息
  因为是点对点,所以完全匹配的绑定规则才会被队列保存。
队列
  点进去看一下,get message可以看到测试信息“dirct.exchang.msg.hello”
get message
信息
  Fanout测试
  因为是广播,所以,无论路由键是什么,有没有路由键,都会被保存,下图可以看出来,publish message之后,所有的队列里都多了一条信息。
fanout效果
  Topic测试
  因为是匹配广播,所以,只有符合匹配规则的才会被保存

topic测试

  可以点进去核对一遍。
效果
  另外:测试的时候因为每次get message只能有一条信息,为了测试方便,把Ack Mode模式改为第二个,就可以逐一看到消息了,不过看完之后自动就删了。这是因为这个模式是给消息队列说:我拿到了,你可以删了。
在这里插入图片描述
  到这界面测试就完了,下边就搞源码、编码了。

RabbitTemplate发送接收消息测试

  1.IDEA新建工程,并引入web模块、RabbitMQ模块

新建工程
  2.看看pom文件里的Rabbitmq模块及重要Bean

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

  点进去可以看到有message、rabbit模块,都知道,只要引入starter,springboot就会帮着自动配置,那么,也看一下自动配置原理吧。

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-messaging</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.amqp</groupId>
      <artifactId>spring-rabbit</artifactId>
      <version>2.2.11.RELEASE</version>
      <scope>compile</scope>
    </dependency>

  自动配置是由RabbitAutoConfiguration这个类做的,IDEA两下shift键,搜一下这个类
rabbit自动配置类
  感兴趣可以进去看看自动配置做了哪些,每个版本略有不同,本菜鸟一边瞅源码一边实践一边写博客码字有点吃不消。列一下源码里主要的几个东西:
  1).CachingConnectionFactory,连接工厂,它实现了ConnectionFactory
  2)…RabbitProperties,封装了所有配置
  3)…RabbitTemplate,给RabbitMQ发送和接收消息
  4)…AmqpAdmin,RabbitMQ系统管理功能组件,可以声明队列、创建交换器等

  3.用RabbitTemplate测试direct,为了方便,管理界面我已经把所有消息清空了。
在这里插入图片描述
  上测试代码:

@Autowired
    RabbitTemplate rabbitTemplate;

    /*
    *
     * @Author zo10010
     * @Description //TODO 
     * @Date 0:41 2020/10/18
     * @Param 1.单播,点对点
     * @return 
     **/
    
    @Test
    void contextLoads() {
        //message需要自己构造一个;定义消息内容和消息头
        //rabbitTemplate.send(exchange,routeKey,message);

        //object默认当成消息体,只需要传入要发送的对象,自动序列化给rabbitmq
        //rabbitTemplate.convertAndSend(exchange,routeKey,message);
        Map map = new HashMap<String,Object>();
        map.put("msg","第一条消息");
        map.put("data", Arrays.asList("hello",123,true));
        rabbitTemplate.convertAndSend("exchange.direct","niupi",map);
    }

  现在可以看到,只有路由键是niupi的有消息,而且是一堆不认识的东西。content_type是说用java的序列化搞的
在这里插入图片描述
  下来接收数据,上代码

	@Test
    void test() {
    	//receiveAndConvert里的参数是消息队列的名称
        Object o = rabbitTemplate.receiveAndConvert("niupi");
        //打印接收来对象的类型
        System.out.println(o.getClass());
        //打印接收来对象
        System.out.println(o);
    }

  打印结果,并且回管理界面看,消息队列里已经没了,完成

class java.util.HashMap
{msg=第一条消息, data=[hello, 123, true]}

  测fanout

		Map map = new HashMap<String,Object>();
        map.put("msg","第二条消息");
        map.put("data", Arrays.asList("hello",123,true));
        rabbitTemplate.convertAndSend("exchange.fanout","",map);

  测topic

		Map map = new HashMap<String,Object>();
        map.put("msg","第三条消息");
        map.put("data", Arrays.asList("hello",123,true));
        rabbitTemplate.convertAndSend("exchange.fanout","niupi.map",map);

RabbitTemplate序列化改为JSON

  因为上边测试的消息里的东西有点看不懂(java序列化),那搞一下搞成json格式的,之所以是java序列化,是因为RabbbitTemplate里有个MessageConverter默认用的是java的,所以把MessageConverter换掉就行了,那么MessageConverter有哪些实现能直接用?不慌,鼠标指在它上边ctry+t,找吧,看到json相关的Jackson2JsonMessageConverter,就用它。新建自己的配置类。配置会自动生效,因为源码里是判空用默认,非空就用用户配置,搞定它。
MessageConverter

import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 〈一句话功能简述〉<br> 
 * 〈〉
 *
 * @author Administrator
 * @create 2020/10/18
 * @since 1.0.0
 */
@Configuration
public class MyAMQPConfig {
    @Bean
    public MessageConverter MessageConverter1(){
        return new Jackson2JsonMessageConverter();
    }
}

RabbitMQ监听

  yy一下订单系统和库存系统,订单系统要把订单信息放到消息队列,库存系统去监听队列并取出消息,然后进行处理。就涉及到监听。
  代码描述:好比下边代码的service就是一个普通的service,给需要接收订单信息的方法上加上@RabbitListener注解,queues的值是监听哪个消息队列,然后主程序需要加上@EnableRabbit注解,启动主程序就开始监听了,可以自行测试。这里的监听,只要拿到数据,消息队列里就会删除这个数据。

@Service
public class Mapservice {

    @RabbitListener(queues = "niupi")
    public void receive(Map<String,Object> map){
        System.out.println("接收到消息了:" + map.toString());
    }

}
@EnableRabbit
@SpringBootApplication
public class AmqptestApplication {

    public static void main(String[] args) {
        SpringApplication.run(AmqptestApplication.class, args);
    }

}

  如果有一些定制的消息,接收的这边需要获取到头信息,那就用amqp.core包里的Message。

 @RabbitListener(queues = "niupi.news")
    public void receive02(Message message){
        MessageProperties messageProperties = message.getMessageProperties();
        System.out.println(message.getBody());
        System.out.println(message.getMessageProperties());
    }

Rabbit的AmqpAdmin管理组件

  它的作用:创建和删除Queue、Exchange、Binding,毕竟要用代码代替界面操作,直接上说明和代码:
  首先在测试类注入AmqpAdmin,为什么能直接注入,因为自动配置类里有写入这个组件。

    @Autowired
    AmqpAdmin amqpAdmin;

  下边代码分别创建了交换器、队列、绑定,关于参数,可阅读源码选择自己要的类型

    @Test
    void test2() {
        //创建Exchange
        //amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
        //System.out.println("创建完成");
        //创建Queue
        //amqpAdmin.declareQueue(new Queue("amqpadmin.queue",true));
        //创建Binding
        //amqpAdmin.declareBinding(new Binding("amqpadmin.queue", Binding.DestinationType.QUEUE, "amqpadmin.exchange", "amqpadmin.hehe",null));
    }

  结果
结果

结

  本篇只做入门、上手使用,具体业务场景、方式方法等东西需ctry+左键浏览源码

springBoot实现redis 发布式监听消息队列 springBoot实现redis 发布式监听消息队列 1.定时器监听不同功能的消息 import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.listener.PatternTopic; import org.springframework. 阅读详情

相关推荐

SpringBoot集成RabbitMQ消息队列

作者:禅与计算机程序设计艺术2021年7月,Spring官方宣布了 Spring Boot 的正式版本发布,这是目前最主流的 Java Web开发框架。它提供了非常方便的集成环境配置、自动化配置、starter依赖管理、健康检查等功能。基于这些优秀特性,越来越多的人开始使用 Spring Boot 来进行企业级开发。 Spring Boot 作为新时代 Java Web开发领域的先驱,在国内外都受到广泛关注,也被用于各种企业级项目的开发。其中集成消息队列的功能虽然有限,但依然可以提供高性能的分布式应用服务。

AI天才研究院 2144

在springboot中配置redis的事件监听以及redis实现简单的消息队列

在springboot中配置redis的事件监听以及redis实现简单的消息队列redis的key失效监听:redis实现简单的消息队列 redis的key失效监听: 1.配置reidsConfig中的RedisMessageListenerContainer 2.定义自己的事件监听器 代码如下: @Configuration public class RedisConfig { //这个是配置redis序列化 @Bean public RedisTemplate<Object

m0_46178378的博客 4204

ZYNQ AXI DMA零拷贝实战:用mmap在用户空间玩转高速数据流(基于Petalinux 2020.2)

本文详细介绍了在ZYNQ平台上使用AXI DMA和mmap技术实现零拷贝数据传输的实战方法。基于Petalinux 2020.2环境,通过内核配置、设备树修改和用户空间库设计,大幅提升PS与PL之间的数据传输效率,特别适用于高清视频流、高速AD采样等高性能场景。

weixin_27956639的博客 365

Spring boot 利用Redis实现队列消息监听简单示例

我的应用场景:当某个业务系统接收到MQ消息需要按照顺序进行执行时,且收到的消息间隔时间过短时,可以把需要执行的消息放到队列里面进行逐个消费,因为对消息执行的代码加锁是不行的,因为消息间隔时间小,容易出错,只能对消息再进行一层封装,然后执行.,这种情况只适用于消息不是必须实时消费。 1.Redis配置 主要配置序列化和反序列化使用的方式. package com.example.demo.config; import com.fasterxml.jackson.annotation.JsonAutoDete

hp961218的博客 6038

Claude Code 的 Subagent 到底怎么用?

Subagent是ClaudeCode中的专业化AI代理系统,每个代理专注单一领域(如代码审查、数据库设计),具备独立记忆空间和并行处理能力。适用于中大型项目开发,通过配置文件定义代理职责与权限,可显式调用或自动触发多代理协作。典型场景包括代码安全审查、全栈并行开发和技术方案对比。使用时需注意避免过度拆分、权限过宽等陷阱,结合链式工作流和负载均衡可显著提升效率。实测在电商项目开发中能缩短20%工期并提升40%性能。

bgeyq的博客 1994

离线环境下 Ubuntu 22.04 制作自定义apt源 安装 Docker环境 的部署方案

本文介绍了一种在无外网环境下部署服务器项目的离线方案。通过在外网环境中制作包含APT软件包和Docker镜像的离线资源包,实现在内网环境中的完整部署。方案详细说明了离线APT源的制作方法、Docker镜像的导出/导入流程,以及内网服务器的软件安装和网络配置步骤。特别强调了版本一致性、目录结构规范和网络适配等注意事项,适用于需要严格隔离网络的生产环境部署。该方案具有可扩展性,可根据实际需求调整软件包和镜像列表。

mmx_2022的博客 654

SpringBoot 中使用Redis Stream 实现消息监听

SpringBoot 中使用Redis Stream 实现消息监听 Demo环境 JDK8 Maven3.6.3 springboot2.4.3 POM依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h

胡海龙 1万+

torch.jit.script 与 torch.jit.trace

它们是 PyTorch 的即时编译(Just-in-Time Compilation)模块的一部分,用于提高模型的执行效率并支持模型的部署。方法只跟踪了给定输入张量的执行路径,因此在使用转换后的模块对象进行推理时,输入张量的维度和数据类型必须与跟踪时使用的相同。跟踪模型可以看作是一个具有相同功能的脚本模型,但它还保留了原始模型的动态特性,可以使用更多高级特性,如动态图和控制流。它接受一个模型和一个示例输入,并记录模型在给定输入上的执行过程,然后返回一个跟踪模型。的模型文件,并将其转换为评估模式。

leoatliang的博客 1万+

Springboot+RabbitMQ消息队列

第一步:安装对应的RabbitMQ安装和配置 RabbitMQ是基于Erlang语言开发的。所以安装RabbitMQ之前需要先下载安装配置Erlang,下载地址:http://www.erlang.org/downloads  并将安装后的......\erl9.0\bin的bin目录配置到path环境变量中。然后下载安装RabbitMQ。下载地址:http://www.rabbitmq.com...

qq_34463172的博客 690

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

博通PEX89000 PCIe 5.0交换芯片:如何为AI集群构建高效GPU互联架构

本文深入解析了博通PEX89000 PCIe 5.0交换芯片如何为AI集群构建高效的GPU互联架构。该芯片通过提供高带宽、低延迟的PCIe 5.0交换能力,打破传统GPU通信的带宽瓶颈,并支持多主机共享、资源池化及软件定义拓扑,从而显著提升大规模AI训练与推理任务的效率与资源利用率。

weixin_29214559的博客 412

SpringBoot整合RabbitMQ消息中间件

RabbitMQ是开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ使用Erlang语言编写,并且RabbitMQ是基于AMQP协议的

云丶言的博客 609

Frida实战:SSL Pinning绕过技术全解析

本文详细解析了如何使用Frida工具绕过SSL Pinning技术,包括环境搭建、四种实战绕过方案及常见问题排查指南。通过具体代码示例和实战经验,帮助安全研究人员快速掌握SSL Pinning绕过技术,适用于金融类App的安全测试场景。

weixin_42530732的博客 188

消息队列——RabbitMQ与Springboot的简单使用

一、RabbitMQ的配置搭建 请参考 消息队列——RabbitMQ在Centos的基本搭建 二、起步使用 1.创建一个Springboot项目 hello-rabbitmq,并加上RabbitMQ依赖,如图

Joe14103的博客 346

嵌入式工程师成长之路(1)——元件基础(完整版)

为什么你的电路总是“玄学”故障?答案藏在这些元件里! 0欧电阻竟能引发信号反射?5V转3.3V电平匹配失败导致MCU烧毁?电容降压设计让电源“滋滋”响?——这些坑,本文全填平! 优快云硬件领域头部博主十年踩坑经验汇总,覆盖电阻、电容、电感核心难点+高频实战问题,让你从“调试地狱”直通“一次成功”!

云轩阁 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RabbitMQ整合SpringBoot发送消息(使用AmqpTemplate)

RabbitMQ整合SpringBoot做一些简单的消息发送。 虽然只是使用了简单的fanout模式推送的消息,不过其他模式也一样,无非就是匹配路由键的规则。 RabbitMQ的定义和规则可以看看这里:https://blog.youkuaiyun.com/xianyun1992/article/details/107699839 创建SpringBoot项目: 1、首先创建一个普通的SpringBoot项目,添加RabbitMQ的maven依赖: <dependency>

我还可以 3687

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SpringBoot集成RabbitMQ

1.添加依赖 spring-boot-starter-amqp <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>...

上等的猪头肉 160

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringBoot整合RabbitMQ快速上手入门

接收者(一定要注意一个地方,这里up返回值为空类型,也就是不返回响应,如果rabbit监听器要返回响应要在发送者中设置一下Replyto)Config(这是一个最基本的Rabbit搭建,仅仅一个queue,大家可以根据自己情况添加exchange,binding等)首先我们还是讲一下大致步骤(想不想定义实体类都可以,定义实体类的话,要以json的形式发送)2.我们要进行消息的发送和接收,所以自然需要配置我们的发送者和接收者。首先我们要知道RabbitMQ中,我们需要发送和接收消息。

2303_80701832的博客 1288

RabbitMQ与SpringBoot整合

1,创建test-rabbitmq-consumer消费方模块 2,创建test-rabbitmq-producer提供方模块 3,以上两个模块都需要导入以下配置 1)依赖导入 <!--springboot整合rabbitMQ的jar包--> <dependency> <groupId>org.springframewo...

ChenDa 331

随便谈谈RabbitMQ与springBoot进行集成。

先说说题外话,本来只想找到一个springBoot快速集成RabbitMQ的例子,用起来就行的。但是百度搜了一大通, 各有各的玩法,但是就是没找到一个自己心仪的方式。最终发现,稍微看看springBoot的jar包,顿时觉得清晰好多。顺便说明一下,这个文章全是我自己总结的,目前是不同于网络上各种转载文的。旨在给有兴趣的朋友共同分享。关于RabbitMQ就不做介绍了。几种消息传递模式官网自有介绍。这里

roykingw的专栏 4970

RabbitMQ消息队列

前期准备:第一步需要安装Erlang和MQ软件,如果不安装Erlang的话我们的MQ是无法安装的,我是在win10下面给大家演示的,我下面给大家准备好了两个安装包,直接下载下来就可以使用了,当然也可以自己去官网下载,但是下载下来一定要注意一下版本对应,不然下载下来Erlang安装好了安装MQ的时候就提示错误(版本太低),如果自己已经下载安装完了发现版本对不上的话就找到安装目录,双击下图选项。上面安装完成以后就自行启动MQ了,这里就不演示了,启动完成以后打开浏览器输入。

qq_38935605的博客 2209

SpringBoot整合消息服务

消息服务 ActiveMQ安装 SpringBoot整合ActiveMQ RabbitMQ简介并安装 SpringBoot整合RabbitMQ 消息服务 ActiveMQ安装 SpringBoot整合ActiveMQ JMS===Java Message Service[发布者、订阅者]===java平台,无法跨平台(ActiveMQ) RabbitMQ\ActiveMQ\kafa...

zeng_0825的博客 376

SpringBoot项目开发(十一):RabbitMQ消息队列

1.为什么使用消息队列? 系统解耦:在分布式环境中,可能有A、B、C、D….等多个系统,A直接调用B提供的服务接口,当A系统修改时,可能需要B也跟着修改,这样耦合性比较强。MQ可以解耦这样的场景 流量销峰:在电商抢购活动中,商品可能几秒钟就被抢购完,但是系统或数据库无法在几秒内处理所有请求,大量请求或许会让数据库直接崩溃,把请求压到队列中,消费者有序的处理队列中的请求 稳定性:队列有确认机制,...

zhuyu19911016520 2862

Springboot集成Rabbitmq生产消费实例

Springboot集成Rabbitmq生产消费实例1. 引入依赖2. 生产者2.1 配置文件2.2 交换机与队列绑定2.3 生产者发送消息2.4 生产者ConfirmCallBack与ReturnCallBack3. 消费者3.1 配置文件3.2 消费消息4. 参考资料 继整理rabbitmq架构原理以及部署的文章后,在使用方面上还欠缺完整的集成使用流程。恰逢中秋佳节放假之际,搭建springboot工程实例,完善springboot集成rabbitmq实现消息生产者发送消息以及消费者消费消息的过程,于此

shy871的博客 665

SpringBoot之RabbitMQ消息队列搭建与ACK消息确认入门

SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门可以学学这篇文章然后根据我前面两篇文章RabbitMq的文章写一下消息确认https://blog.youkuaiyun.com/linpeng_1/article/details/80505828 ...

一叶知秋hwb的博客 390

springBoot部署rabbitMq

超详细的使用springBoot部署rabbitMq,值得拥有 springBoot部署rabbitMq

格林王子举哥 236
上一篇: Navicat工具连接Oracle数据库报错【No matching authentication protocol】
下一篇: 学习教程收藏
献 丑
博客等级 码龄8年 10粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值