Названный пункт назначения для расширения источника Spring Cloud Stream - PullRequest
0 голосов
/ 01 мая 2020

Мы разрабатываем исходный соединитель rabbit mq в SCDF, работающем на связывателе kafka, и добавляем дополнительные функции, которые могут быть расширены с помощью функций для добавления дополнительной обработки перед доставкой сообщения в конечный пункт назначения.

Вопрос, который у меня возник, заключается в том, что в настоящее время выходные данные доставляются по умолчанию в topi c при работе в режиме пружинной загрузки. Есть ли способ дать именованную очередь вместо вывода по умолчанию topi c?

Является ли это известным ограничением, поскольку источник кролика основан на загрузке 2.1.x? Если это так, есть ли альтернативы для достижения аналогичной функциональности с использованием последней функции Supplier для rabbit mq listener.

Простое приложение

@SpringBootApplication
@Import(org.springframework.cloud.stream.app.rabbit.source.RabbitSourceConfiguration.class)
public class RabbitSourceApp {
    public static void main(String[] args) {
        SpringApplication.run(RabbitSourceApp.class, args);
    }

    @Bean
    public Function<String, String> upper() {
        return value -> value.toUpperCase();
    }

}

пом. xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example.source</groupId>
    <artifactId>source.sample</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath></relativePath>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
        <spring-cloud.schema.version>2.2.1.RELEASE</spring-cloud.schema.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud.stream.app</groupId>
            <artifactId>spring-cloud-starter-stream-source-rabbit</artifactId>
            <version>2.1.3.RELEASE</version>
            <exclusions>
                <exclusion>  <!-- declare the exclusion here -->
                    <groupId>io.pivotal.spring.cloud</groupId>
                    <artifactId>spring-cloud-services-starter-config-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-schema</artifactId>
            <version>${spring-cloud.schema.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

приложение yaml

spring:
  cloud:
    stream:
      kafka:
        binder:
          brokers: localhost:29092
      bindings:
        upper-out-0:
          destination: upperQ
      function:
        definition: upper
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /
rabbit.queues: TestQ

1 Ответ

0 голосов
/ 01 мая 2020

Это то, что сработало для меня, но я не уверен, что это правильное решение.

      bindings:
        output:
          destination: upperQ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...