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