zoukankan      html  css  js  c++  java
  • SpringBoot整合消息服务组件

    在进行分布式系统设计时,经常会使用消息服务组件进行系统整合与异步服务通信,其基本结构为生产者与消费者处理,如图5-1所示。常用的消息组件主要包括两类:JMS标准(ActiveMQ)和AMQP标准(RabbitMQ、Kafka),本章将为读者讲解这两类组件与SpringBoot的整合。

     5.3.1 SpringBoot整合ActiveMQ消息组件

    ActiveMQ是Apache提供的开源组件,是基于JMS标准的实现组件。下面将利用SpringBoot整合ActiveMQ组件,实现队列消息的发送与接收。
    1.【mldnboot-integration项目】修改pom.xml配置文件,追加spring-boot-starter-activemq依赖库。

     2.【mldnboot-integration项目】修改application.yml配置文件,进行ActiveMQ的配置。

     3.【mldnboot-integration项目】定义消息消费监听类。

     4.【mldnboot-integration项目】定义消息生产者业务接口。

     5.【mldnboot-integration项目】定义消息业务实现类。

     6.【mldnboot-integration项目】定义JMS消息发送配置类,该类主要用于配置队列信息。

     本例利用ActiveMQ实现了消息的发送与接收处理。每当有消息接收到时,都会自动执行MessageConsumer类,进行消息消费。

    5.3.2 SpringBoot整合RabbitMQ消息组件

    RabbitMQ是一个在AMQP基础上构建的新一代企业级消息系统,该组件由Pivotal公司提供,使用ErLang语言开发。本小节将为读者讲解如何使用SpringBoot实现指定RoutingKey的消息处理。

     1.【mldnboot-integration项目】修改pom.xml配置文件,追加spring-boot-starter-amqp依赖包。

     2.【mldnboot-integration项目】修改yml.xml配置文件,进行RabbitMQ的相关配置。

     3.【mldnboot-integration项目】为了可以正常使用RabbitMQ进行消息处理,还需要做一个消息生产配置类。

     4.【mldnboot-integration项目】建立消息发送接口。

     5.【mldnboot-integration项目】建立消息业务实现子类。

     6.【mldnboot-integration项目】建立一个消息消费端的配置程序类。

     7.【mldnboot-integration项目】定义监听处理类。

     此时程序实现了与RabbitMQ消息组件的整合,同时在整个程序中只需要调用IMessageProducer接口中的send()方法就可以正常发送,而后会找到设置同样ROUTINGKEY的消费者进行消息消费。

    5.3.3 SpringBoot整合Kafka消息组件

    Kafka是新一代的消息系统,也是目前性能最好的消息组件,在数据采集业务中被广泛应用。本程序中配置的Kafka将基于Kerberos认证实现消息组件处理。
    1.【操作系统-Windows】定义一个Kerberos客户端文件,路径为d:kafka_client_jaas.conf。

     2.【mldnboot-integration项目】修改pom.xml配置文件,追加依赖库配置。

     3.【mldnboot-integration项目】修改application.yml配置文件,进行Kafka配置项编写。

     4.【mldnboot-integration项目】定义消息业务发送接口。

    5.【mldnboot-integration项目】使用Kafka消息机制实现消息发送接口。

     6.【mldnboot-integration项目】建立一个Kafka消息的消费程序类。

     7.【mldnboot-integration项目】由于此时Kafka采用Kerberos认证,因此需要修改程序启动主类。

     此时,可以通过测试程序调用IMessageProducer接口进行消息发送,由于Kafka已经配置了自动创建主题,所以即使现在主题不存在,也不影响程序执行。

  • 相关阅读:
    网络时钟同步SOCKET代码
    NTP时间同步之同步时钟要领
    3分钟 Markdown 快速入门(超详细)(Day_33)
    如何在idea中将项目生成API文档(超详细)(Day_32)
    多条件分页 (Day_31)
    常见判断错误 (Day_30)
    HTML 标签隐藏占用空间与不占用空间(Day_29)
    EasyUI_使用datagrid分页 (Day_28)
    (xxx) is not defined at HTMLInputElement.onblur(Day_27)
    EasyUI系列—点击按钮加载tabs_day26
  • 原文地址:https://www.cnblogs.com/callbin/p/15343538.html
Copyright © 2011-2022 走看看