前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >配置Spring Cloud Bus并集成消息代理示例

配置Spring Cloud Bus并集成消息代理示例

原创
作者头像
堕落飞鸟
发布2023-04-15 12:59:05
3120
发布2023-04-15 12:59:05
举报
文章被收录于专栏:飞鸟的专栏

我们将创建两个微服务:一个是 Order Service,另一个是 Product Service。这两个服务将使用 Spring Cloud Bus 和 RabbitMQ 来进行消息传递。

Order Service

首先,让我们来创建 Order Service。

代码语言:javascript
复制
@SpringBootApplication
@RestController
@EnableBinding(Sink.class)
public class OrderServiceApplication {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @StreamListener(Sink.INPUT)
    public void handle(String message) {
        logger.info("Received message: {}", message);
    }

    @GetMapping("/order")
    public String placeOrder() {
        String message = "Order placed";
        logger.info("Sending message: {}", message);
        return message;
    }

    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}

这个应用程序使用 @EnableBinding 注解将 Sink绑定到它的消息代理上。它还使用 @StreamListener 注解来指定消息处理方法。

在 Order Service 中,我们还定义了一个 /order REST 端点。当该端点被调用时,应用程序会向消息代理发送一条消息。该消息将被 Product Service 接收并处理。

Product Service

接下来,让我们来创建 Product Service。

代码语言:javascript
复制
@SpringBootApplication
@RestController
@EnableBinding(Source.class)
public class ProductServiceApplication {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    private final MessageChannel output;

    public ProductServiceApplication(Source source) {
        this.output = source.output();
    }

    @PostMapping("/product")
    public String addProduct(@RequestBody String product) {
        String message = "Product added: " + product;
        logger.info("Sending message: {}", message);
        output.send(MessageBuilder.withPayload(message).build());
        return message;
    }

    public static void main(String[] args) {
        SpringApplication.run(ProductServiceApplication.class, args);
    }
}

这个应用程序使用 @EnableBinding 注解将 Source 绑定到它的消息代理上。它还定义了一个 /product REST 端点,该端点用于添加新产品。

当 /product 端点被调用时,Product Service 会向消息代理发送一条消息,该消息将被 Order Service 接收并处理。

4.3 运行示例

我们已经创建了 Order Service 和 Product Service,接下来让我们运行它们并查看消息传递的结果。

首先,我们需要启动 RabbitMQ 服务器。然后,我们可以使用以下命令分别启动 Order Service 和 Product Service:

代码语言:javascript
复制
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8081 (Order Service)
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082 (Product Service)

当这两个服务都已经启动时,我们可以通过访问 Order Service 的 /order 端点和 Product Service 的 /product 端点来测试它们之间的消息传递。

在 Order Service 的控制台输出中,我们应该能够看到类似以下内容的消息:

代码语言:javascript
复制
Received message: Product added: {product name}

这表明 Product Service 成功地向 Order Service 发送了一条消息,并且 Order Service 成功地接收并处理了该消息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Order Service
  • Product Service
  • 4.3 运行示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档