spring线程消息
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于spring线程消息内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在spring线程消息相关知识领域提供全面立体的资料补充。同时还包含 safari浏览器、samba、SAMP 的知识内容,欢迎查阅!
spring线程消息相关知识
-
Spring Cloud Bus:消息总线SpringBoot实战电商项目mall(20k+star)地址:https://github.com/macrozheng/mall 摘要 Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令,本文将对其用法进行详细介绍。 Spring Cloud Bus 简介 我们通常会使用消息代理来构建一个主题,然后把微服务架构中的所有服务都连接到这个主题上去,当我们向该主题发送消息时,所有订阅该主题的服务都会收到消息并进行消费。使用 Spring Cloud Bus
-
Spring Cloud入门教程(十):消息总线(Bus)在我们开始讲Spring Cloud Bus之前来看另外一个IT术语:ESB(Enterprise Service Bus)。ESB在维基百科中是这样描述的:企业服务总线(Enterprise Service Bus,ESB)的概念是從服務導向架構(Service Oriented Architecture, SOA)發展而來。SOA描述了一种IT基础设施的应用集成模型;其中的软构件集是以一种定义清晰的层次化结构来相互耦合。一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。在企业计算领域,企业服务总线是指由中间件基础设施产品技术实现的、 通过事件驱动和基于XML消息引擎,为更复杂的面向服务的架构提供的软件架构的构造物。企业服务总线通常在企业消息系统上提供一个抽象层,使得集成架构师能够不用编码而是利用消息的价值完成集成工作。企业服务总线提供可靠消息传输,服务接入,协议转换,数据格式转换,基于内容的路由等功能,屏蔽了服务的物理位置,协议和数据格式。其中,最重要的一句就是:企业
-
Spring消息机制消息机制是使用消息通知的方式,解耦生产者与消费者。编程上体现的是职责分割,使得消息处理的扩展性得到增强,符合设计原则中的单一职责以及开闭原则。Spring的ApplicationListener接口ApplicationListener是Spring应用监听器基础接口,是消费者需要实现,用来消费特定事件的,接口如下:public interface ApplicationListener<E extends ApplicationEvent> extends EventListener { /** * Handle an application event. * @param event the event
-
spring-消息1、异步消息 当一个消息发送时候,消息会被交给消息代理,消息代理可以确保消息被发送到指定的目的地,同时解放发送者,使其能够继续进行其它业务。消息代理通常有ActiveMQ、RabbitMQ...,目的地通常有队列和主题,队列采用点对点的模型,主题采用发布订阅模型点对点模型:消息队 列可以有多个接受者,但每条消息只能被一个接收者取走 发布订阅模型:消息队列可以有多个订阅者,每条消息可以发送给多个主题订阅者 2、JMS发送/接收消息1)activemq配置,使用ActiveMQ,并使用了JMSTemplate。 JMS模板为开发者提供了与消息代理进行交互发送和接收消息的标准API,几乎每个消息代理都支持JMS。Jms模板和spring Date提供的jdbc模板一样可以消除样板代码,让开发更集中在业务处理上。 <!-- ActiveMQ连接工厂 --> <bean i
spring线程消息相关课程
spring线程消息相关教程
- 5.3 主线程接受消息 跟上述场景类似,主线程也需要通过监听的方式获取辅线程的消息:1062
- 2. 消息适配器基础概念概述 基础概念:消息适配器,可能一说这个名词,大家就感觉有点陌生,我们可以把消息适配器拆开来进行理解。首先,消息这一名词就不用多说了,消息在我们的应用程序中指的就是应用程序中的数据,在 RabbitMQ 中,指的就是在 RabbitMQ 中流转的消息,也就是说,我们应用程序中的数据在 RabbitMQ 中就被称为消息。最后,我们再来看适配器。和之前一样,我们先从日常生活中举个例子,比如我们的笔记本电脑,在笔记本电脑上存在不同的对外暴露的类似USB形式的端口,这些端口不仅仅只有USB这一种类型,还有Type-C,以及Light端口等,根据我们的需要来连接这些端口所用的工具就可以看做是一个适配器。当我们需要将自己的电脑与大屏或投影仪设备相连接时,此时,我们需要一根连接在电脑和大屏或投影仪设备之间的连线,这根线我们通常称为数据线,在有了这根数据线之后,我们就可以建立起一个在电脑和大屏或投影仪设备之间的连接,就可以将电脑的屏幕投影到大屏或投影仪设备上,这个过程就是我们的电脑适配大屏或投影仪设备的一个过程,而这中间的数据线就被可以被称为适配器。如果我们没有这个数据线来作为电脑与大屏或投影仪设备之间的适配器,那么通常情况下我们就不能将电脑屏幕来进行投影了(Wifi投影的情况除外)。在这一例子中,我们也可以这样说:即需要一根数据线来将我们的电脑屏幕与大屏或投影仪设备进行适配,以达到投影电脑屏幕的目的。说白了,适配器其实就是为了适配两种不同物品,来达到两种或多种物品之间的协同工作的目的的一种技术手段,而这种技术手段可以是技术实物(比如数据线),也可以是一种可以在空气中进行传播的介质(Wifi投屏)。消息适配器亦是如此,在 Spring-AMQP 中,消息适配器指的就是,为了监听 RabbitMQ 中的消息,从而将消息与具体的业务逻辑相结合,达到消息适配业务逻辑的目的的一种技术手段。在介绍完消息适配器的基础概念之后,下面让我们来看一下如何对消息适配器进行简单的配置吧。
- 4.2 消息 定义:消息,顾名思义,就是我们平常所说的一条信息、一条数据,消息是 RabbitMQ 中的核心元素,我们产生的任何数据,在 RabbitMQ 中都被称为消息。在整个 RabbitMQ 工作流程中间,有且只有消息被流转,我们使用 RabbitMQ 的目的就是来处理我们应用程序中需要 RabbitMQ 来处理的任何消息,该消息可以是一句话,可以是一张图片,可以是一条视频,也可以是一种文档。
- 2. 消息容器基础概念概述 基础概念:消息容器,即容纳消息的容器。通过对上述部分小节的学习,我们已经知道,在 原生 RabbitMQ 知识体系中,并没有单独地一个消息容器的概念,只有消息队列的概念。但是,在 Spring-AMQP 中,消息容器的概念和原生 RabbitMQ 知识体系中的消息队列的概念完全不一样。Spring-AMQP 中的消息容器指的是:可以提供对消息队列、消息、消费者、消息签收模式进行控制,以及消息的全方位监听的一系列工具的统称。我们知道,在 RabbitMQ 中,充当核心角色的就是我们应用程序中的数据,也就是消息,那么,对消息以及消息队列进行全方位监控的工具,在 Spring-AMQP 中就被称为消息容器。消息容器的主要作用就是对经过 RabbitTemplate 消息模板发送到 RabbitMQ Server 中的消息进行监听,当然,要确保 RabbitTemplate 和消息容器所使用的是同一个 RabbitAdmin 构造的连接,这样才能对消息进行监控。在介绍完消息容器的基础概念之后,下面让我们来看一下如何对消息容器进行简单的配置吧。
- 3.2 常用消息容器基础配置 在 Spring-AMQP 中,消息容器共有这五种:AbstractMessageListenerContainer、DirectMessageListenerContainer、DirectReplyToMessageListenerContainer、SimpleMessageListenerContainer,以及 MessageListenerContainer 接口。在这五种消息容器中,常用的消息容器只有一种,就是 SimpleMessageListenerContainer ,由于 SimpleMessageListenerContainer 消息容器配置起来简单方便,所支持的配置的属性比较全面,所以该消息容器是所有消息容器中使用频率最高的,也是实际工作中使用最多的一种消息容器。本节以 SimpleMessageListenerContainer 消息容器为例,来介绍一下 SimpleMessageListenerContainer 消息容器该如何使用吧。Tips: SimpleMessageListenerContainer 消息容器是众多消息容器中最基本的消息容器,我们把 SimpleMessageListenerContainer 消息容器的基本使用了解之后,其他的消息容器就无师自通了,只不过其他的消息容器所提供的配置属性或多或少罢了。初始化 SimpleMessageListenerContainer 消息容器像 RabbitAdmin 和 RabbitTemplate 一样,要想使用消息容器,需要先对消息容器进行初始化,这个初始化过程非常简单,初始化 SimpleMessageListenerContainer 消息容器的代码如下所示:代码实现:@Beanpublic SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory) { SimpleMessageListenerContainer simpleMessageListenerContainer = new SimpleMessageListenerContainer(connectionFactory); return simpleMessageListenerContainer;}代码解释:第 1 行,我们使用 Spring 的 Bean 注解将我们声明的 simpleMessageListenerContainer 方法注入到 Spring 容器中,这样 Spring 容器就可以监听到我们注入的配置。第 2 行,我们使用 Spring-AMQP 中的 SimpleMessageListenerContainer 类,来声明了一个名为 simpleMessageListenerContainer 的方法,用来对 simpleMessageListenerContainer 消息容器进行初始化。第 3 行,我们实例化了一个 simpleMessageListenerContainer 实例,该实例是 Spring-AMQP 中对 simpleMessageListenerContainer 消息容器进行初始化的实例,要想使用 SimpleMessageListenerContainer ,就必须要初始化该实例。第 4 行,我们将初始化好的 simpleMessageListenerContainer 实例进行返回。SimpleMessageListenerContainer 基本使用配置 SimpleMessageListenerContainer 消息容器,和之前的配置 RabbitAdmin 以及 RabbitTemplate 不同,我们只需要直接在上述初始化方法中去填充我们需要的配置属性即可,这里以基本常用属性为例,代码如下所示:simpleMessageListenerContainer.setQueues(new Queue("test_001"), new Queue("test_002"), new Queue("test_003"));simpleMessageListenerContainer.setConcurrentConsumers(1);simpleMessageListenerContainer.setMaxConcurrentConsumers(3);simpleMessageListenerContainer.setDefaultRequeueRejected(false);simpleMessageListenerContainer.setAcknowledgeMode(AcknowledgeMode.AUTO);simpleMessageListenerContainer.setConsumerTagStrategy(new ConsumerTagStrategy() { @Override public String createConsumerTag(String queue) { return queue + "_" + "created consumer tag"; }});simpleMessageListenerContainer.setMessageListener(new ChannelAwareMessageListener() { @Override public void onMessage(Message message, Channel channel) throws Exception { String msg = new String(message.getBody()); // do someting... } simpleMessageListenerContainer.setAutoStartup(true)});代码解释:第 1-2 行,我们使用 simpleMessageListenerContainer 的 setQueues 方法,来设置我们需要进行监听的队列,这里新建了三个队列,名称分别为:test_001 ,test_002 ,test_003。第 3-4 行,我们分别使用了 simpleMessageListenerContainer 的 setConcurrentConsumers 方法和 setMaxConcurrentConsumers 方法,来分别设置当前用于消费消息的消费者个数,以及最大允许用于消费消息的消费者个数,这里分别被设置成了 1 和 3 ,表示:当前用于消费消息的消费者个数为 1 个,最大允许进行消费消息的消费者个数为 3 个。第 5 行,我们使用 simpleMessageListenerContainer 的 setDefaultRequeueRejected 方法,来设置是否开启重回队列, 关于什么是重回队列,在前面小节中都有详细介绍,这里不再赘述。当 setDefaultRequeueRejected 方法的值为 true 时,表示开启重回队列,当为 false 时,表示关闭重回队列,这里表示不适使用重回队列,即该方法的值为 false。第 6 行,我们使用 simpleMessageListenerContainer 的 setAcknowledgeMode 方法,来设置当前消息的接收模式, 即对应原生 RabbitMQ 中的消息签收模式,是自动签收还是手动签收,这里,AcknowledgeMode.AUTO 表示自动签收消息。第 7-10 行,我们使用 simpleMessageListenerContainer 的 setConsumerTagStrategy 方法,来为消费者设置一个标签,设置标签需要通过 new ConsumerTagStrategy 匿名内部类的方式来实现,通过重写其中的 createConsumerTag 方法来设置消费者的 Tag 标签。第 13-17 行,我们使用 simpleMessageListenerContainer 的 setMessageListener 方法,来添加一种监听器, 添加监听器的方式也是通过匿名内部类实现;new ChannelAwareMessageListener 监听器监听的是,当消息经过 channel 时的情况,实现该监听器需要重写其中的 onMessage 方法,我们可以将业务逻辑填充在 onMessage 方法中。setMessageListener 方法可以添加任意一种 Spring-AMQP 中支持的监听器,不单单只有 ChannelAwareMessageListener 监听器这一种,其他的监听器就交给同学们自行探索吧。第 19 行,我们使用 simpleMessageListenerContainer 的 setAutoStartup 方法,来设置 simpleMessageListenerContainer 消息容器的启动模式,这里被设置为了 true ,表示,当 Spring 容器启动时,simpleMessageListenerContainer 消息容器也随之启动。Tips: 1. setQueues 方法中的参数只有一个,就是消息队列,其参数类型为 Queue… ,该参数理论上可以支持无限个队列被添加进去,从而对这些队列进行监听; 2. AcknowledgeMode 的消息签收类型,不只有 AUTO 这一种,还有 NONE 和 MANUAL ,分别表示不设置和手动监听。 3. simpleMessageListenerContainer 消息容器是支持热加载的一款消息容器,即当我们的应用程序处于运行状态时,我们手动改变了某一配置属性的值,这种改动是立即生效的,不需要我们重启我们的应用程序,这点同学们注意。
- 2.4 过滤 logcat 消息 将日志输出减少至可管理水平的一种方法是,使用过滤器施加限制。要定义并应用过滤器,请执行以下操作:在过滤器菜单中,选择一个过滤选项:Show only selected application:仅显示通过应用代码生成的消息(默认选项)。Logcat 使用正在运行的应用的 PID 来过滤日志消息。No Filters:不应用过滤器。无论我们选择哪个进程,logcat 都会显示设备中的所有日志消息。Edit Filter Configuration:创建或修改自定义过滤器。例如,我们可以创建一个过滤器,以同时查看两个应用中的日志消息。如果选择了 Edit Filter Configuration,还需要创建或修改过滤器,在 Create New Logcat Filter 对话框中指定过滤器参数:Filter Name:输入要设定的过滤器的名称,或者从左侧窗格中进行选择以修改现有过滤器。名称只能包含小写字符、下划线和数字。Log Tag:(可选)指定标记。Log Message:(可选)指定日志消息文本。Package Name:(可选)指定软件包名称。PID:(可选)指定进程 ID。如需了解详情,请参阅 Logcat 消息格式。Log Level:(可选)选择日志级别。Regex:选择此选项可以为相应参数使用正则表达式语法。如果我们认为并没有看到想要检查的日志消息,请尝试选择 No filters 并搜索特定日志消息。
spring线程消息相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议