2017-03-17 16 views
0

qpid amqp-1-0-clientとそれに関連するjarを使用してAzureサービスバスに接続するコンシューマを作成しています。私はAzureキューに接続してメッセージを受信することができますが、問題は、メッセージを処理する前にそれを確認したにもかかわらず、同じメッセージを複数のキューから受信しています。また、私のメッセージはDLQに移行されます。Spring JMSのAzureは同じメッセージを複数受信し、メッセージはDLQに移動します

例として、500個のメッセージがキューにある場合、MessageListener.onMessage()をオーバーライドするonMessage()メソッドが500回以上実行されています。およそ200のメッセージがDLQにプッシュされます。キューからメッセージを読んでデータベースに格納しています。これらの数字は常に同じではありません。 DBにメッセージを読み込んで保存するために、私のアプリケーションは600msかかる。 Azureの

@Configuration 
public class AzureConfiguration { 
@Bean 
public ConnectionFactory jmsConnectionFactory() { 
    CachingConnectionFactory cachingConnectionFactory = null; 
    try { 
     ConnectionFactoryImpl a = ConnectionFactoryImpl.createFromURL(url); 
     a.setMaxPrefetch(0); 
     a.setSyncPublish(true); 
     cachingConnectionFactory = new CachingConnectionFactory(a); 
     cachingConnectionFactory.setReconnectOnException(true); 
     cachingConnectionFactory.setClientId(applicationName); 
     exceptionListener.setCachedConnFactory(cachingConnectionFactory); 
    } catch (MalformedURLException e) { 
    } 
    return cachingConnectionFactory; 
} 
@Bean 
public MessageListenerContainer getContainer() { 
    DefaultMessageListenerContainer container = new DefaultMessageListenerContainer(); 
    container.setConnectionFactory(jmsConnectionFactory()); 
    container.setDestinationName(queueName); 
    container.setMessageListener(messageConsumer); 
    container.setConcurrency(concurrency); 
    exceptionListener.setContainer(container); 
    container.setExceptionListener(exceptionListener); 
    container.setAutoStartup(true); 
    container.setSessionAcknowledgeMode(2); 
    return container; 
} 

}

、私の依存関係に接続するための設定を持っている PFBマイコード: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.5</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jms_1.1_spec</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-amqp-1-0-client</artifactId> <version>0.30</version> </dependency> <dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-amqp-1-0-client-jms</artifactId> <version>0.30</version> </dependency> <dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-amqp-1-0-common</artifactId> <version>0.30</version> </dependency>

助けてください。

答えて

0

サポートされていない従来のAMQP 1.0 JMSクライアントを使用していますが、現在のAMQP JMSマッピング仕様は実装されていません。それがうまくいかないことは驚くべきことではありません。新しいものを使用する方が良い運があるはずです。今はQVidのAMQP JMSクライアントのみをサポートしており、hereを取得できます。

<dependency> 
    <groupId>org.apache.qpid</groupId> 
    <artifactId>qpid-jms-client</artifactId> 
    <version>0.21.0</version> 
</dependency> 
関連する問題