zoukankan      html  css  js  c++  java
  • 整合Spring Cloud Stream Binder与GCP Pubsub进行消息发送与接收

    我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶!

    1 前言

    之前的文章《整合Spring Cloud Stream Binder与RabbitMQ进行消息发送与接收》讲解了Spring Cloud streamRabbitMQ的整合,本文将简单介绍一下Spring Cloud StreamGoogle Cloud Pub/Sub的整合。

    2 通过Emulator启动Pub/Sub

    因使用实际的GCP Pub/Sub相对麻烦,本文通过模拟器来运行。

    关于Google Cloud SDK的安装可参考:Mac安装Google Cloud SDK

    安装必要的组件:

    gcloud components install beta
    gcloud components install pubsub-emulator
    

    启动模拟器:

    $ gcloud beta emulators pubsub start --project=pkslow-prj --host-port=0.0.0.0:8511
    Executing: /google-cloud-sdk/platform/pubsub-emulator/bin/cloud-pubsub-emulator --host=0.0.0.0 --port=8511
    [pubsub] This is the Google Pub/Sub fake.
    [pubsub] Implementation may be incomplete or differ from the real system.
    [pubsub] May 11, 2021 10:27:31 PM com.google.cloud.pubsub.testing.v1.Main main
    [pubsub] INFO: IAM integration is disabled. IAM policy methods and ACL checks are not supported
    [pubsub] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    [pubsub] SLF4J: Defaulting to no-operation (NOP) logger implementation
    [pubsub] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    [pubsub] May 11, 2021 10:27:32 PM com.google.cloud.pubsub.testing.v1.Main main
    [pubsub] INFO: Server started, listening on 8511
    

    启动的时候设置了项目名和端口。

    3 整合

    引入依赖:

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-pubsub-stream-binder</artifactId>
    </dependency>
    

    实现简单的消息收发处理:

    package com.pkslow.cloud.stream.binder.pubsub;
    
    @SpringBootApplication
    public class StreamBinderPubsub {
        private static final Logger log = LoggerFactory.getLogger(StreamBinderPubsub.class);
        public static void main(String[] args) {
            SpringApplication.run(StreamBinderPubsub.class, args);
        }
    
        @Bean
        public Supplier<String> pkslowSource() {
            return () -> {
                String message = "www.pkslow.com";
                log.info("Sending value: " + message);
                return message;
            };
        }
    
        @Bean
        public Consumer<String> pkslowSink() {
            return message -> {
                log.info("Received message " + message);
            };
        }
    }
    

    配置Pub/Sub属性与Cloud Stream属性:

    spring:
      cloud:
        stream:
          function:
            definition: pkslowSource;pkslowSink
          bindings:
            pkslowSource-out-0:
             destination: pkslow-topic
            pkslowSink-in-0:
              destination: pkslow-topic
          poller:
            fixed-delay: 500
        gcp:
          pubsub:
            emulator-host: localhost:8511
            project-id: pkslow-prj
    

    如果是实际的GCP Pub/Sub,指定key文件即可:

    spring:
      cloud:
        gcp:
          credentials:
            location: file:/xxx.json
    

    运行日志如下:

    4 总结

    代码请查看:https://github.com/LarryDpk/pkslow-samples


    欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

    多读书,多分享;多写作,多整理。

  • 相关阅读:
    动手动脑——登录界面
    异常处理动手动脑问题
    继承与多态
    课程作业04——动手动脑(字符串String)
    创建过的对象的个数
    类和对象动手动脑问题
    第二周进度条
    构建之法阅读笔记01
    新课程界面
    软件工程概论课后作业01
  • 原文地址:https://www.cnblogs.com/larrydpk/p/14957214.html
Copyright © 2011-2022 走看看