2017-06-15 12 views
0

慰めNIFI JMSConnectionFactoryProviderアンバインド/バインドApacheのNiFiのJNDI接続ファクトリプロバイダを使用して

私は継続的にアンバインド(慰めJMSを実行している)クライアントを見ている(NiFi ConsumeJMSプロセッサ)からのメッセージを消費しようとしているサイトhttp://dev.solace.com/integration-guides/nifi/から/ 「クライアント発行のバインド解除」の理由でキューにバインドします。クライアントはすべてのデータを消費することができず、「メッセージは破棄されるまでに満了しました」というメッセージが表示されます。バインド/バインディングの原因は何ですか?また、このNifiプロセッサを使用してこれを解決するにはどうすればよいですか。ありがとう

答えて

1

すべてのメッセージの消費後にApache NiFiはMessageConsumerを閉じています。

org.apache.nifi.jms.processors.JMSConsumerhereの出典を参照してください。

public void consume(final String destinationName, final ConsumerCallback consumerCallback) { 
    this.jmsTemplate.execute(new SessionCallback<Void>() { 
     @Override 
     public Void doInJms(Session session) throws JMSException { 
       ... 
       JmsUtils.closeMessageConsumer(msgConsumer); 

Solace JMS APIのデフォルトの動作は、コンシューマにメッセージのバッチを配信することです。しかし、NiFiは1メッセージだけを消費した後に接続を繰り返し閉じるので、残ったバッチは作成された次のConsumerに再配信されます。

エンドポイントで「最大再配信」設定が有効になっている必要があり、「破棄された」メッセージの再配信の最大量を超えたと考えられます。

ここでの解決策は、1つのメッセージのみが飛行できるように、エンドポイントの「配信された最大未解決メッセージ数」設定を1に調整することです。

接続ファクトリの「AD Window Size」メッセージ受信プロパティを1に調整して、最適なパフォーマンスを確保することもお勧めします。