【Spring】SpringBoot官方笔记6消息¶
The Spring Framework provides extensive support for integrating with
messaging systems, from simplified use of the JMS API
using JmsTemplate
to a complete infrastructure to receive messages
asynchronously. Spring AMQP provides a similar feature set for the
Advanced Message Queuing Protocol. Spring Boot also provides
auto-configuration options for RabbitTemplate
and RabbitMQ. Spring
WebSocket natively includes support for STOMP messaging, and Spring Boot
has support for that through starters and a small amount of
auto-configuration. Spring Boot also has support for Apache Kafka.
AMQP¶
The Advanced Message Queuing Protocol (AMQP) is a platform-neutral,
wire-level protocol for message-oriented middleware. Spring Boot offers
several conveniences for working with AMQP through RabbitMQ, including
the spring-boot-starter-amqp
“Starter”.
RabbitMQ
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=secret
spring.rabbitmq.addresses=amqp://admin:secret@localhost
Sending a Message
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final AmqpAdmin amqpAdmin;
private final AmqpTemplate amqpTemplate;
public MyBean(AmqpAdmin amqpAdmin, AmqpTemplate amqpTemplate) {
this.amqpAdmin = amqpAdmin;
this.amqpTemplate = amqpTemplate;
}
public void someMethod() {
this.amqpAdmin.getQueueInfo("someQueue");
}
public void someOtherMethod() {
this.amqpTemplate.convertAndSend("hello");
}
}
Sending a Message To A Stream
spring.rabbitmq.stream.name=my-stream
Receiving a Message
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
@RabbitListener(queues = "someQueue")
public void processMessage(String content) {
// ...
}
}
Apache Kafka¶
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=myGroup
Sending a Message
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final KafkaTemplate<String, String> kafkaTemplate;
public MyBean(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
public void someMethod() {
this.kafkaTemplate.send("someTopic", "Hello");
}
}
Receiving a Message
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
@KafkaListener(topics = "someTopic")
public void processMessage(String content) {
// ...
}
}
WebSockets¶
Spring Boot provides WebSockets auto-configuration for embedded Tomcat, Jetty, and Undertow. If you deploy a war file to a standalone container, Spring Boot assumes that the container is responsible for the configuration of its WebSocket support.