¡Continúe creando, acelere el crecimiento! Este es el octavo día de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de junio", haga clic para ver los detalles del evento
Introducción a Spring Cloud Stream
Spring Cloud Stream es un marco para crear microservicios basados en eventos altamente escalables conectados a sistemas de mensajería compartidos. El marco proporciona un modelo de programación flexible basado en modismos y mejores prácticas de Spring establecidos y familiares, incluido el soporte para semántica pub/sub persistente, grupos de consumidores y partición con estado.
¿Qué middleware de mensajes admite Spring Cloud Stream?
El middleware de mensajes soportado por Spring Cloud Stream se muestra en la siguiente figura:
rápido de usar
establecer dependencias (pom)
Para las dependencias, debemos prestar atención a la correspondencia de la spring-boot``spring-cloud``spring-cloud-alibaba
versión .
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</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>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>
</dependencies>
复制代码
establecer configuración (yml)
Configuración Se rocketmq
requiere .
spring:
cloud:
stream:
bindings:
input:
destination: TestTopic
group: TestGroup
output:
destination: TestTopic
rocketmq:
binder:
name-server: 127.0.0.1:9876
server:
port: 18080
复制代码
Establecer clase de inicio
@EnableBinding({Source.class, Sink.class})
@SpringBootApplication
public class RocketMQApplication {
public static void main(String[] args) {
SpringApplication.run(RocketMQApplication.class, args);
}
}
复制代码
productor de mensajes
Principalmente para enviar mensajes.
@Component
public class RocketMQProducer {
@Resource
private Source source;
public void sendMessage(String msg) {
Map<String, Object> headers = new HashMap<>();
headers.put(MessageConst.PROPERTY_TAGS, "testTag");
MessageHeaders messageHeaders = new MessageHeaders(headers);
Message<String> message = MessageBuilder.createMessage(msg,
messageHeaders);
this.source.output().send(message);
}
}
复制代码
consumidor de mensajes
Se utiliza principalmente para aceptar mensajes e imprimir el contenido de los mensajes.
@Component
public class TestTopicConsumer {
@StreamListener(Sink.INPUT)
public void onMessage(String messsage) {
System.out.println("received message:" + messsage + " from binding:" + Sink.INPUT);
}
}
复制代码
prueba
Escribimos una TestController
clase para proporcionar una interfaz para enviar mensajes al mundo exterior, llamar y enviar mensajes para lograr el envío de mensajes.
@RestController
@RequestMapping("/MQTest")
public class TestController {
@Resource
private RocketMQProducer producer;
@RequestMapping("/sendMessage")
public String sendMessage(String message) {
producer.sendMessage(message);
return "send message success";
}
}
复制代码
La prueba envía un mensaje, ejecuta el comando curl http://127.0.0.1:18080/MQTest/sendMessage\?message\=hahha
y devuelve el resultado de la siguiente manera: La salida de la consola del servidor es la siguiente:
Resumir
Este artículo responde brevemente a la práctica de integrar RockectMQ con Spring Cloud Stream, pero en nuestro proceso de desarrollo actual, esto está lejos de ser suficiente. Tenga en cuenta que esto es solo un caso, y compartiré la solución que realmente se usa en el proyecto más adelante.