springcloudbus-rabbitmq

2017-10-31  本文已影响0人  白敏鸢

书接前文,言归正转,前面说道springcloud在分布式下的配置问题,
ok,接下来说说消息队列的问题,就和相亲一样,我知道你的基本信息,我们还得见个面谈谈是吧,=-=,这样才知道我们合适不,
springcloud做消息队列的有两个东西rabbitmq和kafka,这里我说一下rabbitmq,kafka再说,哈哈,最近加班加疯了。

rabbitmq:兔子妈其,

怎么用?
step1:
安装erlang与rabbitmq,具体就百度好了。
安装完了执行:rabitmq-plugins enable rabbitmq_management;
访问:localhost:15672/可以看到我们的rabbitma_manager了
          默认user:guest passwd:guest   
            我们配置一个user:springcloud,密码123456好了,测试使用
  其中有:exchange,queue等东西

step2:
rabbitmq-product
配置文件
spring.application.name=rabbitmq-hello
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=springcloud
spring.rabbitmq.password=123456

config:配置rabbitmq的配置信息,以前博客有写,哈哈,就不多说啦
package com.example.rabbitmqserver.rabbittmq;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitConfig {

    @Bean
    public Queue helloQueue() {
        return new Queue("hello");
    }

}

product:搞一个hello队列出来,把一个字符串放进去
package com.example.rabbitmqserver.rabbittmq;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class Sender {

    @Autowired
    private AmqpTemplate rabbitTemplate;

    public void send() {
        String context = "hello " + new Date();
        System.out.println("Sender : " + context);
        this.rabbitTemplate.convertAndSend("hello", context);
    }

}
customer:使用rabbit的监听器监听helllo的队列,然后取东西出来
package com.example.rabbitmqserver.rabbittmq;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@RabbitListener(queues = "hello")
public class Receiver {

    @RabbitHandler
    public void process(String hello) {
        System.out.println("Receiver : " + hello);
    }

}

app:最后是我们的Application.java
package com.example.rabbitmqserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RabbitmqServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(RabbitmqServerApplication.class, args);
    }
}

step3:跑起来吧。去rabbitmq manager中可以看到多出来链接条目
      console中也显示啦helo队列的东西,脑补!!!!=-=
step$:rabbitmq可以和erukayuconfig结合起来。做到动态刷新,这个有时间再研究吧,哈哈


1:rabbit mq的安装:先去安装erlanng,再去apt-get install 安装一下rabbitma就成
2:rabbitmq的创建流程与组件:
以前的博客写了,就不说啦
        http://www.jianshu.com/p/c9d52f07eda6
3:rabbit server与rabbit client是异步的,可以在demo里面进行测试server与client分别关闭之后的情况,rabbitserver与rabbitclient的demo
4:eureka与rabbitmq,config的结合,在eureka client中有bus/refresh接口用于同步信息
5:使用bus/refresh接口实现所有的刷新,/bus/refresh?destinaation=*:*;用于指定刷新特殊的应用
6:架构优化:
        method1:把configserver加入消息总线,
        method2:bus/refresh不是发送到某个springboot而是发送到config server
上一篇下一篇

猜你喜欢

热点阅读