本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3

本文基于前两篇文章eureka-server、eureka-client、eureka-ribbon和spring-gateway的实现。

参考

概述

Spring Cloud Stream是一个构建消息驱动微服务的框架。它通过使用Spring Integration来连接消息代理中间件以及实现消息事件驱动的微服务应用。Spring Cloud Stream为一些供应商的消息中间件产品提供了个性化的自动化配置实现,并且引入了发布-订阅、消费组以及消息分区这三个核心概念。简单的说,Spring Cloud Stream本质上就是整合了Spring Boot和Spring Integration,实现了一套轻量级的消息驱动的微服务框架。

1. 创建Spring Cloud Stream应用:spring-cloud-stream

1.1 增加pom依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>

1.2 配置application.yml文件

spring:
application:
name: spring-cloud-stream
cloud:
stream:
kafaka:
binder:
brokers: 192.168.10.196:9092 #kafaka服务地址
zk-noeds: 192.168.10.196:2181 #zk服务地址
auto-create-topics: true
bindings:
output: #stream默认提供的output
destination: stream-kafaka #消息发送到的目的地
content-type: text/plain #消息发送格式,接收端不用指定格式,但是发送端要。 server:
port: 1000

1.3 创建消息发送Service:KafakaSendService

package com.mm.spring.cloud.springcloudstream.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.support.MessageBuilder; @EnableBinding(Source.class)
public class KafakaSendService { @Autowired
private Source source; public void sendMsg(String msg) {
source.output().send(MessageBuilder.withPayload(msg).build());
}
}

1.4 创建调用消息Controller:KafakaProducerController

这个KafakaProducerController是方便演示用

package com.mm.spring.cloud.springcloudstream.controller;

import com.mm.spring.cloud.springcloudstream.service.KafakaSendService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class KafakaProducerController { @Autowired
private KafakaSendService kafakaSendService; @RequestMapping("/send/{msg}")
public void send(@PathVariable String msg) {
kafakaSendService.sendMsg(msg);
}
}

1.5 修改eureka-ribbon应用

1.5.1 增加pom依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>

1.5.2 application.yml增加配置

spring:
cloud:
stream:
kafka:
binder:
brokers: 192.168.10.196:9092
auto-create-topics: true
bindings:
input:
destination: stream-kafaka

1.5.3 新增消息处理类:RecieceService

package spring.cloud.demo.eurekaribbon.service;

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink; @EnableBinding(Sink.class)
public class RecieceService { @StreamListener(Sink.INPUT)
public void recieve(Object payload) {
System.out.println(payload);
}
}

1.6 启动服务

按照顺序启动eureka-servereureka-clienteureka-ribbonspring-cloud-stream应用的服务,然后访问http://localhost:1000/send/maomao, 然后查看eureka-ribbon的控制台可以看到,如下图显示:



证明eureka-ribbon已经接到了消息。

1.7 小结

至此,一个简单的Spring Cloud Stream的kafaka应用就搭建完成了,这个是方式是使用了Stream的默认Source和Sink方式。

总结

Spring Cloud Stream涉及的内容还是挺多的,这里先简单实现,至此《spring cloud 2.x版本小白系列教程》就终结了,写这个小白系列教程的目的就是为了大家能对Spring cloud有一个初步的认识和了解,后续我这边会更新Spring cloud进阶教程,大家敬请期待,感谢小伙伴们的支持,谢谢!!!

代码地址

gitHub地址


《Srping Cloud 2.X小白教程》目录


  • 写作不易,转载请注明出处,喜欢的小伙伴可以关注公众号查看更多喜欢的文章。
  • 联系方式:4272231@163.com

spring cloud 2.x版本 Spring Cloud Stream消息驱动组件基础教程(kafaka篇)的更多相关文章

  1. Spring Cloud 系列之 Stream 消息驱动(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Stream 消息驱动(一) 本篇文章讲解 Stream 如何实现消息分组和消息分区. 消息分组 如果有多个消息消费者 ...

  2. SpringCloud学习之Stream消息驱动【自定义通道】(十一)

    如果不清楚本篇内容的,请务必先去看完上一篇再看本篇,否则阅读起来可能会有部分障碍和困难: 上一篇文章<SpringCloud学习之Stream消息驱动[默认通道](十)>我们简单用自定义通 ...

  3. SpringCloud(七)Stream消息驱动

    Stream消息驱动 概述 屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型 官网:https://cloud.spring.io/spring-cloud-static/spring-cl ...

  4. SpringCloud Stream 消息驱动

    1.什么是消息驱动 SpringCloud Stream消息驱动可以简化开发人员对消息中间件的使用复杂度,让系统开发人员更多尽力专注与核心业务逻辑的开发.SpringCloud Stream基于Spr ...

  5. Spring Cloud Stream消息驱动之RocketMQ入门(一)

    SpringCloudStream目前支持的中间件有RabbitMQ.Kafka,还有我最近在学习的RocketMQ,以下是我学习的笔记 学习Spring cloud Stream 可以先学习一下了解 ...

  6. Spring Cloud 系列之 Stream 消息驱动(一)

    在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,消息中间件解决了应用解耦.异步处理.流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构. 不同中间件内部实现方式是不一样的,这些中间 ...

  7. SpringCloud学习之Stream消息驱动【默认通道】(十)

    在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,而以往使用了中间件比如RabbitMQ,那么该中间件和系统的耦合性就会非常高,如果我们要替换为Kafka那么变动会比较大,这时我们可以使用S ...

  8. 九. SpringCloud Stream消息驱动

    1. 消息驱动概述 1.1 是什么 在实际应用中有很多消息中间件,比如现在企业里常用的有ActiveMQ.RabbitMQ.RocketMQ.Kafka等,学习所有这些消息中间件无疑需要大量时间经历成 ...

  9. Spring Cloud Stream消息驱动@SendTo和消息降级

    参考程序员DD大佬的文章,自己新建demo学习学习,由于需要消息回执,看到了@SendTo这个注解能够实现,下面开始学习demo,新建两个项目cloud-stream-consumer消费端 和 cl ...

随机推荐

  1. 团队项目之测试与发布(Alpha版本)

    小组:BLACK PANDA 时间:2019.12.05 测试报告 1.测试找出的BUG 图片上传,文件过大会出错 用户可访问不具权限的URL 空字段导致异常 serializable反序列化时版本不 ...

  2. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'me

    在启动RabbitMQ消费端的时候报错:Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol ...

  3. spring @Transaction事务回滚失败

    今天客户提出一个新问题,出库一批商品,提示失败了,但是库存数量却减少了.看了一下代码一头雾水,我们的代码加了事物,且捕获异常. 经过调试代码发现就是两个原因导致的 第一.在当前方法的catch中处理了 ...

  4. mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现

    转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server ...

  5. 常用注解解析(因为不太明白@component和@configuration写了)

    1.@controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层 2.@service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理 3.@rep ...

  6. go 语言 搭建 图片上传 服务器

    工具: LiteIDE 配置: 代码:list.html <!doctype html> <html> <head> <meta charset=" ...

  7. 第04组 Beta版本演示

    小组信息 组名:斗地组 组长博客:地址 组内成员: 组员 学号 林涛(组长) 031702616 童圣滔 031702117 林红莲 031702213 潘雨佳 031702214 覃鸿浩 03170 ...

  8. 【ES6学习笔记之】Object.assign()

    基本用法 Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). const target = { a: 1 }; const sou ...

  9. vsftpd服务的基本配置

    本文环境:CentOS 7 简介 FTP(文件传输协议,File Transfer Protocol)是最古老的协议之一,诞生于1971年,距今已经半个世纪了,它的目的是在不同计算机之间传输文件(实现 ...

  10. 【转载】algorithm、numeric、functional

    reference url:http://www.cplusplus.com/reference/algorithm reference url:https://blog.csdn.net/Swust ...