mq:
@Autowired
private RabbitTemplate rabbitTemplate;
@RequestMapping("/autoRefresh")
public Object autoRefresh() {
Map<String,Object> sendMap = new HashMap<String,Object>();
sendMap.put("isNew","Y");
rabbitTemplate.convertAndSend("auto.refresh.topic","auto.refresh.all", JSON.toJSONString(sendMap));
return "OK";
}
@Component
@Slf4j
public class AutoRefresh {
@Autowired
private RestTemplate restTemplate;
@Value("${server.port}")
private Integer port;
@RabbitListener(bindings = {
@QueueBinding(value = @Queue("auto.refresh.8002"),exchange = @Exchange(value = "auto.refresh.topic",type = "topic"),key = "auto.refresh.#")
})
public void consumerTopicMsg(Message message) {
log.info("端口:{},获取到刷新通知",port);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders);
restTemplate.postForEntity("http://localhost:"+port+"/actuator/refresh",requestEntity,Object.class);
}
}
由于rabbitMq不支持同一个消息同时被多个机器消费,所以是通过交换机形式来实现让这个消息被多个机器都消费:
特别注意:
1、跟自己的JDK版本一致!!!
2、为什么要重新下载呢?Java的jdk里本来是有的,但是只支持128位,重新下载的这个Oracle提供的支持256位。
{cipher}表示这个密码是需要解密运算的。且整个两边加单引号。