同じプロジェクトで2つのrabbitlistenersを異なる方法で構成するにはどうすればよいですか?

サム・メモリーンズ:

私には2つのキューがあり、それぞれにメッセージがあります。キュー1には鳥オブジェクトがあり、キュー2には鳥スポッティングオブジェクトがあります。メッセージをオブジェクトに戻すためにdefaultclassmapperを使用しています。両方のrabbitlistenersに異なる設定を追加する方法はありますか?

私のリスナー。

 @Qualifier("bird")
@RabbitListener(queues = "vogels")
public void receiveBird(Bird in)  
    BirdSpotting birdSpotting = new BirdSpotting();
    birdSpotting.setBird(in);
    rabbitTemplate.convertAndSend("vogelspottings",birdSpotting);
}

@Qualifier("birdspotting")
@RabbitListener(queues = "vogelspottingmetlocatie")
public void receiveBirdWithLocation(BirdSpotting birdSpotting){
    service.saveBirdSpotting(birdSpotting);

}

私の構成クラス。

@Configuration
@EnableRabbit
public class RabbitConf2 implements RabbitListenerConfigurer {
    @Autowired
    DefaultClassMapper mapper;


    @Bean
    public MappingJackson2MessageConverter consumerJackson2MessageConverter() {
        return new MappingJackson2MessageConverter();
    }

    @Bean
    public DefaultMessageHandlerMethodFactory messageHandlerMethodFactory() {
        DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
        factory.setMessageConverter(consumerJackson2MessageConverter());
        return factory;
    }


    @Override
    public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
        registrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory());
    }

    @Bean
    public RabbitTemplate rabbitTemplateService2(final ConnectionFactory connectionFactory) {
        final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(producerJackson2MessageConverterService2());
        return rabbitTemplate;
    }

    @Bean
    public Jackson2JsonMessageConverter producerJackson2MessageConverterService2() {
        final Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
        jackson2JsonMessageConverter.setClassMapper(mapper);

        return jackson2JsonMessageConverter;
    }

両方のキューに対する2つのデフォルトのクラスマッパー:

@Bean(value = "bird")
    public DefaultClassMapper classMapperService2() {
        DefaultClassMapper classMapper = new DefaultClassMapper();
        Map<String, Class<?>> idClassMapping = new HashMap<>();
        idClassMapping.put("be.kdg.birdgeneratorservice.Bird", Bird.class);
        classMapper.setIdClassMapping(idClassMapping);
        return classMapper;
    }

    @Bean(value = "birdspotting")
    public DefaultClassMapper classMapperService3() {
        DefaultClassMapper classMapper = new DefaultClassMapper();
        Map<String, Class<?>> idClassMapping = new HashMap<>();
        idClassMapping.put("be.kdg.locationservice.BirdSpotting", BirdSpotting.class);
        classMapper.setIdClassMapping(idClassMapping);
        return classMapper;
    }
アルテム・ビラン:

RabbitListenerContainerFactory適切な構成でもう1つのBean を導入し、2番目のBeanの名前を使用する必要があります@RabbitListener

/**
 * The bean name of the {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory}
 * to use to create the message listener container responsible to serve this endpoint.
 * <p>If not specified, the default container factory is used, if any.
 * @return the {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory}
 * bean name.
 */
String containerFactory() default "";

このようにして、Spring Bootによって提供されるデフォルトのものを区別し、別のユースケース用に独自のカスタムを作成します。

ドキュメントで詳細を確認してくださいhttps : //docs.spring.io/spring-amqp/docs/2.1.4.RELEASE/reference/#async-annotation-driven

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Android Studioで同じパッケージ名の2つの異なるプロジェクトを作成するにはどうすればよいですか?

分類Dev

異なるFirebaseプロジェクト用に2つのjsonファイル構成を作成するにはどうすればよいですか?

分類Dev

新しい構成を作成せずに、2つの異なるソリューションで使用される1つのプロジェクトに異なる#defineを使用するにはどうすればよいですか?

分類Dev

異なる構成で同じページに2つのTinyMCEエディターを配置するにはどうすればよいですか?

分類Dev

同じプロジェクトの異なるビルドに異なる.dockerignoreファイルを指定するにはどうすればよいですか?

分類Dev

同じプロジェクトの異なるビルドに異なる.dockerignoreファイルを指定するにはどうすればよいですか?

分類Dev

同じ要素を持つ2つのJSONオブジェクトを異なる順序で比較するにはどうすればよいですか?

分類Dev

2つの異なる品質プロファイルでSonarQubeプロジェクト分析を実行するようにMavenを構成するにはどうすればよいですか?

分類Dev

内容の異なる2つの同じテーブルで構成されるテーブルを作成するにはどうすればよいですか?

分類Dev

異なるプロジェクトのPythonライブラリを同じパッケージに含めるにはどうすればよいですか?

分類Dev

同じタイプであるが1つのプロパティが異なる2つのオブジェクトをDIで注入するにはどうすればよいですか?

分類Dev

既存のプロジェクトのCookiecutterDjango構成を更新するにはどうすればよいですか?

分類Dev

特定の構成のVisualStudioプロジェクトを生成するにはどうすればよいですか?

分類Dev

IAR Embedded WorkbenchプロジェクトのCeedlingを構成するにはどうすればよいですか?

分類Dev

Eclipseのクロスコンパイルプロジェクト用に、同じバージョンの2つの異なる名前のライブラリを条件付きで含めるにはどうすればよいですか?

分類Dev

AndroidのFabric / Crashlytics-同じパッケージ名で2つの異なるcrashlyticsプロジェクトを作成するにはどうすればよいですか?

分類Dev

2017年と同じプロジェクトで2つの異なる言語(C#、node.js)でAzure関数を作成するにはどうすればよいですか?

分類Dev

C#で2つの異なるクラスオブジェクトの同じプロパティを比較するにはどうすればよいですか?

分類Dev

AngularJSディレクティブを2つの異なるプロジェクトにフックするにはどうすればよいですか?

分類Dev

プロジェクトを同じC静的ライブラリの2つの異なるバージョンにリンクするにはどうすればよいですか?

分類Dev

同じホスト/ポートでApacheと連携するように2つの異なるWebアプリを構成するにはどうすればよいですか?

分類Dev

Gradleの1つの命令で、構成に複数のプロジェクトの依存関係を追加するにはどうすればよいですか?

分類Dev

同じプロジェクト内の2つの異なるデータベーススキーマを使用してEntityFramework Coreの移行(コードを最初に)を整理するにはどうすればよいですか?

分類Dev

同じプロットで完全に異なる意味を持つ複数の列をプロットするにはどうすればよいですか?

分類Dev

2つの異なるイベントを同じContikiプロセスに投稿するにはどうすればよいですか?

分類Dev

2つの異なるイベントを同じContikiプロセスに投稿するにはどうすればよいですか?

分類Dev

2つの異なるプロジェクトを同じSQLiteデータベースファイルにポイントするにはどうすればよいですか?

分類Dev

同じ依存関係の2つの異なるバージョンをCMakeプロジェクトに含めるにはどうすればよいですか?

分類Dev

2つのプログラムを同時に実行するにはどうすればよいですか?ただし、それらが異なるディレクトリにある場合はどうすればよいですか?(Tcshシェル)

Related 関連記事

  1. 1

    Android Studioで同じパッケージ名の2つの異なるプロジェクトを作成するにはどうすればよいですか?

  2. 2

    異なるFirebaseプロジェクト用に2つのjsonファイル構成を作成するにはどうすればよいですか?

  3. 3

    新しい構成を作成せずに、2つの異なるソリューションで使用される1つのプロジェクトに異なる#defineを使用するにはどうすればよいですか?

  4. 4

    異なる構成で同じページに2つのTinyMCEエディターを配置するにはどうすればよいですか?

  5. 5

    同じプロジェクトの異なるビルドに異なる.dockerignoreファイルを指定するにはどうすればよいですか?

  6. 6

    同じプロジェクトの異なるビルドに異なる.dockerignoreファイルを指定するにはどうすればよいですか?

  7. 7

    同じ要素を持つ2つのJSONオブジェクトを異なる順序で比較するにはどうすればよいですか?

  8. 8

    2つの異なる品質プロファイルでSonarQubeプロジェクト分析を実行するようにMavenを構成するにはどうすればよいですか?

  9. 9

    内容の異なる2つの同じテーブルで構成されるテーブルを作成するにはどうすればよいですか?

  10. 10

    異なるプロジェクトのPythonライブラリを同じパッケージに含めるにはどうすればよいですか?

  11. 11

    同じタイプであるが1つのプロパティが異なる2つのオブジェクトをDIで注入するにはどうすればよいですか?

  12. 12

    既存のプロジェクトのCookiecutterDjango構成を更新するにはどうすればよいですか?

  13. 13

    特定の構成のVisualStudioプロジェクトを生成するにはどうすればよいですか?

  14. 14

    IAR Embedded WorkbenchプロジェクトのCeedlingを構成するにはどうすればよいですか?

  15. 15

    Eclipseのクロスコンパイルプロジェクト用に、同じバージョンの2つの異なる名前のライブラリを条件付きで含めるにはどうすればよいですか?

  16. 16

    AndroidのFabric / Crashlytics-同じパッケージ名で2つの異なるcrashlyticsプロジェクトを作成するにはどうすればよいですか?

  17. 17

    2017年と同じプロジェクトで2つの異なる言語(C#、node.js)でAzure関数を作成するにはどうすればよいですか?

  18. 18

    C#で2つの異なるクラスオブジェクトの同じプロパティを比較するにはどうすればよいですか?

  19. 19

    AngularJSディレクティブを2つの異なるプロジェクトにフックするにはどうすればよいですか?

  20. 20

    プロジェクトを同じC静的ライブラリの2つの異なるバージョンにリンクするにはどうすればよいですか?

  21. 21

    同じホスト/ポートでApacheと連携するように2つの異なるWebアプリを構成するにはどうすればよいですか?

  22. 22

    Gradleの1つの命令で、構成に複数のプロジェクトの依存関係を追加するにはどうすればよいですか?

  23. 23

    同じプロジェクト内の2つの異なるデータベーススキーマを使用してEntityFramework Coreの移行(コードを最初に)を整理するにはどうすればよいですか?

  24. 24

    同じプロットで完全に異なる意味を持つ複数の列をプロットするにはどうすればよいですか?

  25. 25

    2つの異なるイベントを同じContikiプロセスに投稿するにはどうすればよいですか?

  26. 26

    2つの異なるイベントを同じContikiプロセスに投稿するにはどうすればよいですか?

  27. 27

    2つの異なるプロジェクトを同じSQLiteデータベースファイルにポイントするにはどうすればよいですか?

  28. 28

    同じ依存関係の2つの異なるバージョンをCMakeプロジェクトに含めるにはどうすればよいですか?

  29. 29

    2つのプログラムを同時に実行するにはどうすればよいですか?ただし、それらが異なるディレクトリにある場合はどうすればよいですか?(Tcshシェル)

ホットタグ

アーカイブ