搭建工程所用技术
RabbitMq, Eureka, SpringCloud
搭建步骤
一. 搭建消息发送工程
第一步: 导入依赖
org.springframework.boot
spring-boot-starter-amqp
第二步: 配置rabbitmq (application.yml)
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtual-host: /
第三步: 创建交换机
@Configuration
public class RabbitmqConfig {
public static final String EX_ROUTING_ADDSUFFER=“ex_routing_addsuffer”;
@Bean
public Exchange EXCHANGE_TOPICS_INFORM(){
return ExchangeBuilder.directExchange(EX_ROUTING_ADDSUFFER).durable(true).build();
}
}
第四步: 发送消息
@Override
public Result sendGetSuffer(Integer id) {
String jsonString = JSON.toJSONString(id);
String routingKey = “get”;
try {
rabbitTemplate.convertAndSend(RabbitmqConfig.EX_ROUTING_ADDSUFFER,routingKey,jsonString);
return new Result(null,true);
}catch (Exception e){
e.printStackTrace();
return new Result(null,false);
}
}
二. 创建消息接收工程
第一步: 添加依赖 同上
第二步: 配置rabbitmq(application.yml) 同上
第三部: 创建消息队列
@Configuration
public class RabbitmqConfig {
//队列bean名称
public static final String QUEU_ADDSUFFER="queue_addsuffer";
public static final String QUEU_GETSUFFER="queue_getsuffer";
//交换机Bean名称
public static final String EX_ROUTING_ADDSUFFER="ex_routing_addsuffer";
//声明在rabbitMQ中的队列名
@Value("${rabbitmqmag.queue}")
public String queue_name;
@Value("${rabbitmqmag.queue01}")
public String queue_name01;
//声明队列的key值
@Value("${rabbitmqmag.routingKey}")
public String routingKey;
@Value("${rabbitmqmag.routingKeyGet}")
public String routingGet;
//将转换机放进spring容器
@Bean(EX_ROUTING_ADDSUFFER)
public Exchange EXCHANGE_TOPICES_INFORM(){
return ExchangeBuilder.directExchange(EX_ROUTING_ADDSUFFER).durable(true).build();
}
//将队列放进spring容器
@Bean(QUEU_ADDSUFFER)
public Queue QUEUE_ADDSUFFER(){
Queue queue = new Queue(queue_name);
return queue;
}
@Bean(QUEU_GETSUFFER)
public Queue QUEUE_GETSUFFER(){
Queue queue = new Queue(queue_name01);
return queue;
}
//绑定交换机-消息队列-key
@Bean
public Binding BINGING_QUEUE_INFORM(@Qualifier(QUEU_ADDSUFFER) Queue queue,@Qualifier(EX_ROUTING_ADDSUFFER) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(routingKey).noargs();
}
@Bean
public Binding BINGING_QUEUE01_INFORM(@Qualifier(QUEU_GETSUFFER) Queue queue, @Qualifier(EX_ROUTING_ADDSUFFER) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(routingGet).noargs();
}
}
第四步: 接收消息
@Component
public class SufferRabbitMQ {
private static final Logger LOGGER= LoggerFactory.getLogger(SufferRabbitMQ.class);
@Autowired
RoleService roleService;
@RabbitListener(queues = {"queue_getsuffer"})
public void getSuffer(String id){
Integer parse = (Integer) JSON.parse(id);
Role roleById = roleService.getRoleById(parse);
System.out.println(roleById);
}
}