本文共 4156 字,大约阅读时间需要 13 分钟。
RabbitMQ?????????
??RabbitMQ????
RabbitMQ ??? AMQP ??????????????????????????????????????????????????????????????????? RabbitMQ ??????
1. ???? (Virtual Host)
RabbitMQ ????????????????????????????? RabbitMQ ??????????????????? AMQP ????????????????????????? RabbitMQ ???????????????????????
2. ?? (Connection)
??? RabbitMQ ?????????????????????????Connection?? RabbitMQ ?????????????????Channel????????????
3. ?? (Channel)
??? RabbitMQ ??????????????????????????????????????????????????????????????????????????????????
4. ??? (Exchange)
???? RabbitMQ ????????????????????????????????????????RabbitMQ ??????????? fanout?????direct?????topic?????????????????????
5. ?? (Queue)
??? RabbitMQ ??????????????????????Durability???????Auto Delete?????????????????????????????????? Quorum ??????????????????????
??RabbitMQ????
RabbitMQ ??????????????? API ?????? Spring Boot ? Spring Cloud Stream ???????????? API?Spring Boot ? Spring Cloud Stream ?????????
1. ?? API ????
1.1 Maven ??
???????????? pom.xml ????????
com.rabbitmq amqp-client 5.9.0
1.2 ??????
1.2.1 ????
ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel(); 1.2.2 ????
channel.queueDeclare("queueName", false, false, false, null); 1.2.3 ????
channel.basicPublish("", "queueName", null, message.getBytes("UTF-8")); 1.2.4 ????
??????????
channel.basicConsume("queueName", false, new Consumer() { @Override public void handle(String s, BasicMessage message) { // ?????? }}); ??????????
GetResponse response = channel.basicGet("queueName", false);if (response != null) { byte[] body = response.getBody(); // ?????? channel.basicAck(response.getMessageId());} ????
channel.close();
1.3 ????
RabbitMQ ??????????????????????????????????????????????????????????
2. Spring Boot ??
2.1 Maven ??
org.springframework.boot spring-boot-starter-amqp
2.2 ????
? application.properties ??? RabbitMQ ?????
spring.rabbitmq.host=127.0.0.1spring.rabbitmq.port=5678
2.3 ????
@SpringBootApplicationpublic class RabbitMQApplication { @RabbitListener public void receiveMessage(String message) { System.out.println("??????" + message); } public static void main(String[] args) { SpringApplication.run(RabbitMQApplication.class, args); }} 2.4 ????
@SpringBootApplicationpublic class RabbitMQApplication { @RabbitListener @QueueBinding(value = "exchangeName", key = "routingKey") public void receiveMessage(String message) { System.out.println("??????" + message); } public static void main(String[] args) { SpringApplication.run(RabbitMQApplication.class, args); }} 3. Spring Cloud Stream ??
3.1 Maven ??
org.springframework.cloud spring-cloud-starter-stream-rabbit
3.2 ????
@SpringBootApplicationpublic class RabbitMQApplication { @RabbitTemplate public void send(Message message) { logger.info("?????{}", message); } public static void main(String[] args) { SpringApplication.run(RabbitMQApplication.class, args); }} 3.3 ????
@SpringBootApplicationpublic class RabbitMQApplication { @RabbitListener @Binding(key = "exchangeName") public void receive(Message message) { logger.info("??????{}", message); } public static void main(String[] args) { SpringApplication.run(RabbitMQApplication.class, args); }} ???????????
1. ????
RabbitMQ ????????????????Classic?? Quorum ???Quorum ???? Raft ??????????????????????
2. Poison Message ??
?????????????????Poison Message??RabbitMQ ??????????????????????????
3. ???????
RabbitMQ ?????????????????????????????????????????????????
4. ?????
RabbitMQ ??????????????????????????????? PLAIN ?????OAuth ?????????????
5. ??????
RabbitMQ ???????????????????????????????????????RabbitMQ ?????????????????????
????
RabbitMQ ???????????????????????????????????????????????????????????????????????????????? API?Spring Boot ?? Spring Cloud Stream ???RabbitMQ ??????????????????????????
发表评论
最新留言
关于作者