前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Windows系统搭建好Spring Cloud Stream开发环境

如何在Windows系统搭建好Spring Cloud Stream开发环境

原创
作者头像
leaforbook
修改2019-02-05 15:11:45
1.4K0
修改2019-02-05 15:11:45
举报
文章被收录于专栏:Spring CloudSpring Cloud

当下微服务架构盛行,在Java语言世界最佳的微服务实践无疑是Spring Cloud。Spring Cloud顾名思义就是提供一系列云服务技术的技术解决方案组合,包含云配置、服务注册及发现、客户端弹性模式、服务路由、服务安全、服务日志跟踪及聚合和消息服务等等微服务技术解决方案。其中Spring Cloud Stream就是消息服务的技术解决方案。

本文的主题就是:如何在Windows系统搭建好Spring Cloud Stream开发环境?Java程序员通常比较穷,通常只有一台Windows系统电脑,但是又要在云时代做开发。所以在自己的电脑搭一个虚拟的分布式开发环境相当重要,不仅可以减少很多手动启动服务的工作,还能减少很多任务栏窗口。要搭建好理想的开发环境,首先得了解一些原理:

下图是Spring Cloud Stream的架构图,生产者通过发射器将消息发射到通道,然后到达绑定器,绑定器再和特定的消息系统交互;消息系统再和消费者绑定器交互,通过通道到达接收器,然后把消息发给消费者。Spring   Cloud Stream官方实现的消息系统绑定器支持Kafka和RabbitMQ,当然第三方也可以实现其他消息系统的绑定器。Spring Cloud Stream不管底层的消息系统是什么,对开发者的接口是一样的。这样理论上就可以自由切换不同的消息系统实现,让Java开发者可以不用学习那么多具体的消息系统的使用方法。

本文选用的消息系统是Kafka,Kafka是Scala语言(一种运行在Java虚拟机上的语言)开发的一种分布式消息系统,它的分布式特性又依赖Zookeeper的支持。而Kafka和Zookeeper的运行都只是依赖JRE运行环境。所以对于Java开发者来说,选择Kafka会使运行环境单一,比较省事。如果用RabbitMQ的话,就还要安装Erlang语言的运行环境。

所以,我们要做的第一件事就是安装JRE,当然JDK也可以。第二件事就是搭建Zookeeper集群。第三件事就是搭建Kafka集群。第四件事就是把Zookeeper集群和Kafka集群做成Windows系统服务,做到在后台静默启动和开机自启动。第五件事就是在Spring Cloud项目上引入Spring Cloud Stream和配置好具体的消息系统。最后,我们就可以舒心地在项目上收发消息了!


1.安装JRE

Java程序员都会,本文不做介绍。安装完以后,别忘了配置环境变量。如果已经安装就不用理会。


2.Windows系统单机上搭建Zookeeper集群

2.1 下载

官网地址:http://zookeeper.apache.org/

2.2 解压

将下载到的压缩文件解压,并复制三份到如下目录,你可以自由定制你的目录:

代码语言:javascript
复制
E:\zookeeper\node1\zookeeper-3.4.12E:\zookeeper\node2\zookeeper-3.4.12E:\zookeeper\node3\zookeeper-3.4.12

2.3 修改配置文件

首先将\conf目录下的zoo_sample.cfg复制一份在当前目录并改名成zoo.cfg。

代码语言:javascript
复制
E:\zookeeper\node1\zookeeper-3.4.12\conf\zoo.cfgE:\zookeeper\node2\zookeeper-3.4.12\conf\zoo.cfgE:\zookeeper\node3\zookeeper-3.4.12\conf\zoo.cfg

然后修改zoo.cfg的内容,以下是主要配置:

代码语言:javascript
复制
dataDir=E:\\zookeeper\\node1\\zookeeper-3.4.12\\datadataLogDir=E:\\zookeeper\\node1\\zookeeper-3.4.12\\logclientPort=2181server.1=localhost:2887:3887server.2=localhost:2888:3888server.3=localhost:2889:3889
代码语言:javascript
复制
dataDir=E:\\zookeeper\\node2\\zookeeper-3.4.12\\datadataLogDir=E:\\zookeeper\\node2\\zookeeper-3.4.12\\logclientPort=2182server.1=localhost:2887:3887server.2=localhost:2888:3888server.3=localhost:2889:3889
代码语言:javascript
复制
dataDir=E:\\zookeeper\\node3\\zookeeper-3.4.12\\datadataLogDir=E:\\zookeeper\\node3\\zookeeper-3.4.12\\logclientPort=2183server.1=localhost:2887:3887server.2=localhost:2888:3888server.3=localhost:2889:3889

最后在E:\zookeeper\node1\zookeeper-3.4.12\data建立一个myid文件,文件内容是一个整数,分别是1、2、3。

代码语言:javascript
复制
E:\zookeeper\node1\zookeeper-3.4.12\data\myid (内容为1)E:\zookeeper\node2\zookeeper-3.4.12\data\myid (内容为2)E:\zookeeper\node3\zookeeper-3.4.12\data\myid (内容为3)

2.4 运行命令

代码语言:javascript
复制
cd E:\zookeeper\node1\zookeeper-3.4.12\binzkServer.cmdcd E:\zookeeper\node2\zookeeper-3.4.12\binzkServer.cmdcd E:\zookeeper\node3\zookeeper-3.4.12\binzkServer.cmd

2.5 验证集群是否安装成功

代码语言:javascript
复制
cd E:\zookeeper\node3\zookeeper-3.4.12\binzkCli.cmd

3.Windows系统单机上搭建Kafka集群

3.1 下载

官网地址:http://kafka.apache.org/

3.2 解压

将下载到的压缩文件解压,并复制三份到如下目录,你可以自由定制你的目录:

代码语言:javascript
复制
E:\kafka\node1\kafka_2.12-2.1.0E:\kafka\node2\kafka_2.12-2.1.0E:\kafka\node3\kafka_2.12-2.1.0

3.3 修改配置文件

修改\cofig目录下的server.properties文件,以下是主要配置:

代码语言:javascript
复制
broker.id=0port=9092host.name=127.0.0.1log.dirs=E:\\kafka\\node1\\kafka_2.12-2.1.0\\logzookeeper.connect=localhost:2181,localhost:2182,localhost:2183
代码语言:javascript
复制
broker.id=1port=9093host.name=127.0.0.1log.dirs=E:\\kafka\\node2\\kafka_2.12-2.1.0\\logzookeeper.connect=localhost:2181,localhost:2182,localhost:2183
代码语言:javascript
复制
broker.id=2port=9094host.name=127.0.0.1log.dirs=E:\\kafka\\node3\\kafka_2.12-2.1.0\\logzookeeper.connect=localhost:2181,localhost:2182,localhost:2183

在bin\windows\kafka-run-class.bat中找到“set COMMAND=%JAVA%”行,给 %CLASSPATH%加上双引号:

代码语言:javascript
复制
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*

3.4 运行命令

代码语言:javascript
复制
E:/kafka/node1/kafka_2.12-2.1.0/bin/windows/kafka-server-start.bat E:/kafka/node1/kafka_2.12-2.1.0/config/server.propertiesE:/kafka/node2/kafka_2.12-2.1.0/bin/windows/kafka-server-start.bat E:/kafka/node2/kafka_2.12-2.1.0/config/server.propertiesE:/kafka/node3/kafka_2.12-2.1.0/bin/windows/kafka-server-start.bat E:/kafka/node3/kafka_2.12-2.1.0/config/server.properties

3.5 验证集群是否安装成功

代码语言:javascript
复制
E:/kafka/node1/kafka_2.12-2.1.0/bin/windows/kafka-topics.bat --create --zookeeper localhost:2181,localhost:2182,localhost:2183 --replication-factor 1 --partitions 1 --topic testTopic

4.Zookeeper集群和Kafka集群做成Windows系统服务

4.1 做好集群运行的批处理文件

对于Zookeeper,在E:\zookeeper目录下新建一个文件zkClusterServer.cmd。内容如下:

代码语言:javascript
复制
echo "start zookeeper cluster server..."start call ./node1/zookeeper-3.4.12/bin/zkServer.cmdstart call ./node2/zookeeper-3.4.12/bin/zkServer.cmdstart call ./node3/zookeeper-3.4.12/bin/zkServer.cmdecho "start zookeeper cluster server end"

对于Kafka,在E:\kafka目录下新建一个文件KafkaClusterServer.cmd。内容如下:

代码语言:javascript
复制
echo "start kafka cluster server..."start call  ./node1/kafka_2.12-2.1.0/bin/windows/kafka-server-start.bat ./node1/kafka_2.12-2.1.0/config/server.propertiesstart call  ./node2/kafka_2.12-2.1.0/bin/windows/kafka-server-start.bat ./node2/kafka_2.12-2.1.0/config/server.propertiesstart call     ./node3/kafka_2.12-2.1.0/bin/windows/kafka-server-start.bat ./node3/kafka_2.12-2.1.0/config/server.propertiesecho "start kafka cluster server end"

这两个批处理文件都是把整个集群的所有节点都启动起来,都是异步调用。

4.2 下载工具

可以在百度网盘下载instsrv.exe和srvany.exe。地址:https://pan.baidu.com/s/1PI6qMjdVkuYyjRLokt7xRw ;提取码:fc1o。

然后这两个exe文件都扔到C:\Windows目录下(你可以扔到任何目录下)。

4.3 生成Windows系统服务

执行下面的命令,生成ZookeeperCluster服务和KafkaCluster服务:

代码语言:javascript
复制
C:\Windows\instsrv.exe ZookeeperCluster C:\Windows\srvany.exeC:\Windows\instsrv.exe KafkaCluster C:\Windows\srvany.exe

现在你就可以在系统服务中看到这两个服务了,但是这两个服务目前还不可用。

4.4 修改系统服务的注册表

从注册表中找到:

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ZookeeperClusterHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KafkaCluster

如下图修改:

现在,这两个服务才真正可用。

4.5 启动服务和设置服务开机自启动

启动服务和设置服务开机自启动


5.在Spring Cloud项目上引入Spring Cloud Stream和配置好具体的消息系统

本例使用的Spring Cloud版本是Greenwich。对应的Spring boot版本是2.1.x。其他版本的用法最好通过https://start.spring.io/去确定。

5.1 引入依赖包

代码语言:javascript
复制
<dependency>    <groupId>org.apache.kafka</groupId>    <artifactId>kafka-streams</artifactId></dependency><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-stream</artifactId></dependency><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-stream-binder-kafka-streams</artifactId></dependency>

5.2 项目中做好配置

代码语言:javascript
复制
spring.cloud.stream.kafka.binder.brokers=localhost:9092,localhost:9093,localhost:9094spring.cloud.stream.kafka.binder.default-broker-port=9092

现在本文的目的已经达到了,已经在Windows系统搭建好了一个Spring Cloud Stream开发环境,一开机就可以直接写Spring Cloud Stream代码,是不是很爽?现在再加一道菜,把可运行的Jar包做成Windows服务。


6.把可运行的Jar包做成Windows服务

本节和主题无关,但是非常有用。 有些jar包不怎么需要开发,但是必须启动着,给别的项目提供开发环境。比如Spring Cloud Config和Spring Cloud Eureka服务器等等。做成系统服务可以少开很多窗口,省很多手动启动的工作。所以把可运行的Jar包做成Windows服务是非常有用的。

6.1 下载工具

去https://github.com/kohsuke/winsw下载winsw-xxx-bin.exe文件。

6.2 做成Windows服务

把可执行的Jar包、winsw-xxx-bin.exe放到同一个目录下,两者名称改成一致。比如,有个云配置服务叫做CloudConfig.jar和CloudConfig.exe。然后再创建一个CloudConfig.xml文件。xml文件内容如下:

代码语言:javascript
复制
<service>    <id>CloudConfig</id>    <name> CloudConfig </name>    <description>This is CloudConfig service</description>    <!-- java环境变量 -->    <env name="JAVA_HOME" value="%JAVA_HOME%"/>    <executable>java</executable>    <arguments>-jar "E:\services\cloud-config\CloudConfig.jar"</arguments>    <!-- 开机启动 -->    <startmode>Automatic</startmode>    <!-- 日志配置 -->    <logpath>%BASE%\log</logpath>    <logmode>rotate</logmode> </service>

如下图:

然后,安装服务:

代码语言:javascript
复制
cd E:\services\cloud-configCloudConfig.exe install

现在Windows服务中就有一个叫做CloudConfig的服务了。

6.3 启动服务和设置服务开机自启动

启动服务和设置服务开机自启动


遵照这个思路,在Linux系统或Mac系统也一样可以搭建这样的单机分布式开发环境,对其他云服务也可以搭建成这样方便的单机分布式开发环境。原来,只有一台电脑的穷程序员在云开发时代也可以为所欲为。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.安装JRE
  • 2.Windows系统单机上搭建Zookeeper集群
    • 2.1 下载
      • 2.2 解压
        • 2.3 修改配置文件
          • 2.4 运行命令
            • 2.5 验证集群是否安装成功
            • 3.Windows系统单机上搭建Kafka集群
              • 3.1 下载
                • 3.2 解压
                  • 3.3 修改配置文件
                    • 3.4 运行命令
                      • 3.5 验证集群是否安装成功
                      • 4.Zookeeper集群和Kafka集群做成Windows系统服务
                        • 4.1 做好集群运行的批处理文件
                          • 4.2 下载工具
                            • 4.3 生成Windows系统服务
                              • 4.4 修改系统服务的注册表
                                • 4.5 启动服务和设置服务开机自启动
                                • 5.在Spring Cloud项目上引入Spring Cloud Stream和配置好具体的消息系统
                                  • 5.1 引入依赖包
                                    • 5.2 项目中做好配置
                                    • 6.把可运行的Jar包做成Windows服务
                                      • 6.1 下载工具
                                        • 6.2 做成Windows服务
                                          • 6.3 启动服务和设置服务开机自启动
                                          相关产品与服务
                                          云开发 CloudBase
                                          云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档