您的位置:首页 > 编程语言 > Java开发

springcloud实战之13 rabbitmq消息总线(bus)

2017-12-21 16:03 731 查看
rabbitmq是实现了高级消息队列协议(amqp)的开源消息代理软件,也成为面向消息的中间件。RabbitMQ服务器是用高性能,可伸缩而闻名的Erlang语言编写而成的,其集群和故障转移是构建在开放电信平台框架上的。

RabbitMQ的安装这里不重复说明,可以参考centos7自学之7-rabbitmq的安装与配置,这里介绍spring cloud使用RabbitMQ。

创建工程(springcloud-server-bus-rabbitmq)

添加依赖

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>


创建入口类

@SpringBootApplication
public class SpringCloudServerBusRabbitmq {
public static void main(String[] args) {
new SpringApplicationBuilder(SpringCloudServerBusRabbitmq.class)
.web(true)
.run(args)
;
}
}


创建配置文件

spring:
rabbitmq:
host: 192.168.175.128
port: 5672
username: admin
password: admin
application:
name: springcloud-server-bus-rabbitmq


创建配置类

@Configuration
public class RabbitMqConfig {

public static final String queueName = "springcloud-server-bus-rabbitmq" ;
public Queue rabbitMqQueue(){
return new Queue(queueName);
}
}


创建生产者

@Component
public class Prodecer {

private final Logger _logger = LoggerFactory.getLogger(this.getClass()) ;
@Autowired
private AmqpTemplate rabbitMqTemplate ;

public void send(){
String context = "hello" + new Date() ;
_logger.info("正在向队列发送消息:{}",context);
this.rabbitMqTemplate.convertAndSend(RabbitMqConfig.queueName,context);
}
}


创建消费者

@Component
@RabbitListener(queues = RabbitMqConfig.queueName)
public class Consumer {
private final Logger _logger = LoggerFactory.getLogger(this.getClass()) ;

@RabbitHandler
public void consumer(String message){
_logger.info("从队列获取到的消息:{}",message);
}
}


创建web接口

@Controller
@RequestMapping("/api/rest")
public class RestfulController {

@Autowired
Prodecer prodecer ;
@GetMapping("/message")
public void message(){
prodecer.send();
}
}


创建结构图如下



运行项目

启动springcloud-server-bus-rabbitmq。

调用服务:http://localhost:8080/api/rest/message,其效果如下图。



源码

springcloud-server-bus-rabbitmq

历史文章

springcloud实战之1 技术选型:dubbo还是springcloud

springcloud实战之2 服务注册与发现(eureka实现)

springcloud实战之3 高可用服务注册中心(eureka集群)

springcloud实战之5 服务消费者(ribbon)

springcloud实战之6 服务消费者(Feign)

springcloud实战之7 断路器(Hystrix)

springcloud实战之8 断路器-仪表盘-单例监控(Hystrix)

springcloud实战之9断路器-集群监控(turbine)

springcloud实战之10 分布式配置中心(config)

springcloud实战之11路由网关(zuul)

springcloud实战之12 路由网关拦截器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring rabbitmq bus cloud