複数のインスタンスを作成し、独立したキューのSimpleMessageListenerContainer
カスタムを定義しようとしています。このセットアップの理由は、スレッド プール構成がすべてのメッセージ リスナー キューで共有される共有を作成したくないからです。TaskExecutor
MessageListener
SimpleMessageListenerContainer
提案をお願いできますか?spring-messaging-aws テスト ケース アプローチのいくつかに従ってみましたが、うまくいかないようですか?
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory() {
SimpleMessageListenerContainerFactory msgListenerContainerFactory = new SimpleMessageListenerContainerFactory();
msgListenerContainerFactory.setAmazonSqs(amazonSQSClient());
return msgListenerContainerFactory;
}
@Bean
public SimpleMessageListenerContainer uplinkMessageListenerContainer() throws Exception {
SimpleMessageListenerContainer msgListenerContainer = simpleMessageListenerContainerFactory().createSimpleMessageListenerContainer();
msgListenerContainer.setAmazonSqs(amazonSQSClient());
QueueMessageHandler messageHandler = new QueueMessageHandler();
msgListenerContainer.setMessageHandler(messageHandler);
StaticApplicationContext applicationContext = new StaticApplicationContext();
applicationContext.registerSingleton("uplinkMessageListener", UplinkMessageListener.class);
messageHandler.setApplicationContext(applicationContext);
msgListenerContainer.setBeanName("testContainerName");
messageHandler.afterPropertiesSet();
msgListenerContainer.setMaxNumberOfMessages(maxNumberOfmessages);
msgListenerContainer.setWaitTimeOut(waitTimeout);
msgListenerContainer.setBackOffTime(backOfTime);
msgListenerContainer.setAutoStartup(sqsAutoStartup);
msgListenerContainer.setVisibilityTimeout(visibilityTimeout);
msgListenerContainer.setTaskExecutor(createDefaultTaskExecutor("MPSQSUplinkMessageListener", 2, 10));
msgListenerContainer.afterPropertiesSet();
msgListenerContainer.start();
return msgListenerContainer;
}