资源说明: Spring Cloud Stream RabbitMQ 使用规范
Spring Cloud Stream 是一个基于 Spring Boot 的微服务框架,用于构建分布式消息驱动的微服务系统。RabbitMQ 是一个流行的开源消息队列服务器,提供了高效、可靠的消息传递服务。通过 Spring Cloud Stream RabbitMQ,我们可以轻松地构建分布式的微服务系统,实现消息队列的交换机、通道、队列、消息投递等功能。
命名规范
在 Spring Cloud Stream RabbitMQ 中,我们需要遵守一定的命名规范,以便于识别、扩展和维护微服务之间的消息队列。交换机(exchange)命名规范为 `[provider service name].exchange`,例如 `ucenter.exchange`。通道(Channel)命名规范为 `[channelName].destination`,例如 `spring.cloud.stream.bindings.output.destination=ucenter.exchange`。队列(queue)命名规范为 `[consumer service name abbreviation].[event source type].[operation].[…]`,例如 `sqr.user.merges`。
交换机(Exchange)
在 Spring Cloud Stream RabbitMQ 中,我们使用广播模式(topic)作为交换机模式,每一个服务仅允许拥有一个交换机。交换机是消息队列的核心组件,负责将消息路由到相应的队列中。
通道(Channel)
Spring Cloud Stream RabbitMQ 提供了默认通道,我们可以根据业务需求进行设置。通道是消息队列中的一种抽象概念,用于将消息从生产者传递到消费者。我们可以通过配置 `spring.cloud.stream.bindings.[channelName].destination` 属性来设置通道的 destination。
队列(Queue)
队列是消息队列中的一种具体实现,用于存储消息队列中的消息。我们可以通过配置 `spring.cloud.stream.bindings.input.group` 属性来设置队列的名称。例如,社区人用户合并消息队列的队列名称为 `sqr.user.merges`。
Routing-Key
Routing-Key 是消息队列中的一个关键概念,用于将消息路由到相应的队列中。我们可以通过配置 `spring.cloud.stream.rabbit.bindings.input.consumer.bindingRoutingKey` 属性来设置 Routing-Key。例如,订单支付完成通知卡包的 Routing-Key 为 `order.paid.card`。
消息提供者(Provider)
消息提供者(Provider)是 Spring Cloud Stream RabbitMQ 中的一个关键组件,负责将消息发送到消息队列中。我们可以通过配置 `pom.xml` 文件和 `application.properties` 文件来实现消息提供者。例如,我们可以在 `pom.xml` 文件中添加以下依赖项:
```xml
org.springframework.cloud
spring-cloud-starter-stream-rabbit
```
在 `application.properties` 文件中,我们可以添加以下配置:
```properties
spring.rabbitmq.host=47.92.108.148
spring.rabbitmq.port=6672
spring.rabbitmq.username=user
spring.rabbitmq.password=8y5xXL0OZZ
spring.rabbitmq.virtual-host=/
spring.rabbitmq.publisher-confirms=true
spring.cloud.stream.bindings.customizeOutput.destination=ucenter.exchange
spring.cloud.stream.rabbit.bindings.customizeOutput.producer.routingKeyExpression=headers["routing-key"]
```
Spring Cloud Stream RabbitMQ 是一个功能强大且灵活的微服务框架,提供了丰富的配置选项和灵活的扩展性。通过遵守命名规范和配置文件,我们可以轻松地构建分布式的微服务系统,实现消息队列的交换机、通道、队列、消息投递等功能。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。