MENU

Spring

Spring Cloud(一) 微服务与 Spring Cloud

微服务通过分解大型单体式应用为多个服务来解决复杂性问题;在业务功能不变的情况下,应用被分解为多个可管理的服务,每个服务都有一个用RPC或者消息驱动API定义的边界;微服务架构模式给采用单体编码方式很难实现的功能提供了模块化的解决方案,由此,单个服务更易开发、理解和维护。微服务架构使得每个服务都可以有专门开发团队来开发,开发者可以自由选择开发技术,提供API服务;因为微服务应用都相对简单,进行代码重构、重写也更简单。微服务架构每个服务独立部署,开发者再需要协调其它服务部署对本服务的影响,更易部署。对于每个微服务,可以更定制化的配置硬件资源,更合理地利用资源。

Read More

Spring Boot 整合 RabbitMQ

Spring Boot整合RabbitMQ是非常容易的,下面将通过一个最简单的例子实现消息的发送和接收;仅引用spring-boot-starter-amqp这个starter即可完成rabbitMQ的整合。

首先,创建一个maven项目,pom.xml加入依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

额外增加pring-boot-starter-web是为了方便调用生产消息。

增加配置文件application.yml,配置RabbitMQ相关信息:

spring:
  rabbitmq:
    host: 66.66.66.66
    port: 5672
    username: wangxuesong
    password: 123456

Read More

Spring Boot 中 health 报错问题

今天部署了一个最简单的Spring Boot项目,但是curl localhost:9090/health一直报500;报错信息显示是rabbitmq相关的错误,但是项目中根本没有用到rabbitmq。

{
    "timestamp": 1507777390848,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "java.lang.NoSuchMethodError",
    "message": "com.rabbitmq.client.ConnectionFactory.newConnection(Ljava/util/concurrent/ExecutorService;[Lcom/rabbitmq/client/Address;Ljava/lang/String;)Lcom/rabbitmq/client/Connection;",
    "path": "/health"
}

NoSuchMethodError错误感觉是缺少依赖包;这就奇怪了,明明没用到rabbitmq啊。还是从maven依赖入手,查看关于rabbitmq的依赖mvn dependency:tree | grep rabbitmq

[INFO] |  +- com.rabbitmq:amqp-client:jar:3.5.7:compile
[INFO] |  |  +- com.rabbitmq:http-client:jar:1.1.1.RELEASE:compile

Read More

爬取知乎用户数据

最近一直想写个爬虫项目,刷知乎的时候看见很多知乎用户爬虫的文章,而且都放了GitHub地址;不过大都是代码量比稍大的项目,看那一大片一大片的python代码有点晕。直到昨天发现了一个相当简洁的爬虫项目,四个文件加起来大概四五百行代码。不用cookie、不用MySQL,直接将用户信息JSON存到csv,相当简单粗暴。自己写代码的事可以先放一放了,直接站在巨人的肩膀上吧(直接clone下来跑)。

Read More