2

MessageConverter インターフェイスを実装する顧客コンバーターがあります。ただし、SimpleMessageListenerContainerFactory に登録する方法がわかりません。その結果、SQS からソース形式のメッセージを読み取ろうとするとエラーが発生します。これは、ターゲット オブジェクトに変換する方法がわからないためです。

SqsConfiguration クラスを調べたところ、定義されている simpleMessageListenerContainer Bean に queueMessageHandler が設定されていることがわかりました。QueueMessageHandler にはリゾルバーがあり、そのうちの 1 つは MessageConverter タイプの Collection を取る CompositeMessageConverter です。このコレクションにカスタム MessageConverter を追加する必要があると思います。どうすればそれができるかを理解できないようです。

顧客の MessageMapper を登録する方法を教えてもらえますか?

4

2 に答える 2

4

私が知る限り、これを実際に行う唯一の方法は、QueueMessageHandlerFactory必要なリゾルバー/コンバーターを使用して独自のものを作成することです。

たとえば、これを@Configurationクラスに追加します。

@Bean
public QueueMessageHandlerFactory queueMessageHandlerFactory() {
  List<MessageConverter> converters = ...

  CompositeMessageConverter converter = new CompositeMessageConverter(converters);

  QueueMessageHandlerFactory factory = new QueueMessageHandlerFactory();
  factory.setArgumentResolvers(Arrays.asList(new PayloadArgumentResolver(converter));

  return factory;
}

SqsConfigurationBeanを取得して、QueueMessageHandlerFactoryBean 自体を作成しないようにする必要があります。

于 2015-05-01T13:33:06.963 に答える
0

JMS メッセージが最初に変換されます。その後、MessageListenerContainer は、登録されたリスナーにメッセージを送信します。したがって、MessageListenerContainer が取得する前にコンバーターを登録する必要があります。JmsTemplateまたはJmsMessagingTemplateでのみ 、メソッドsetMessageConverterまたはsetJmsMessageConverterを呼び出して、コンバーターを構成します。

于 2015-04-28T07:29:23.937 に答える