Will do.  Thanks!

Chris McDermott
 
Remote Business Analytics
STaTS/StoreFront Remote
HPE Storage
Hewlett Packard Enterprise
Mobile: +1 978-697-5315
 



On 9/14/16, 10:10 AM, "Oleg Zhurakousky" <ozhurakou...@hortonworks.com> wrote:

    Chris
    
    The “AUTO_ACKNOWLEDGE” (actual value 1) is the default. So although it is 
not being set explicitly it is set.
    
    We can definitely expose the other two (client ack and dups ok).
    Please raise JIRA.
    Cheers
    Oleg
    
    On Sep 14, 2016, at 10:04 AM, McDermott, Chris Kevin (MSDU - 
STaTS/StorefrontRemote) 
<chris.mcderm...@hpe.com<mailto:chris.mcderm...@hpe.com>> wrote:
    
    Looking at the code the ACK mode is not being set.
    
      /**
        * This method essentially performs initialization of this Processor by
        * obtaining an instance of the {@link ConnectionFactory} from the
        * {@link JMSConnectionFactoryProvider} (ControllerService) and 
performing a
        * series of {@link ConnectionFactory} adaptations which eventually 
results
        * in an instance of the {@link CachingConnectionFactory} used to 
construct
        * {@link JmsTemplate} used by this Processor.
        */
       private void buildTargetResource(ProcessContext context) {
           if (this.targetResource == null) {
               JMSConnectionFactoryProviderDefinition cfProvider = 
context.getProperty(CF_SERVICE).asControllerService(JMSConnectionFactoryProviderDefinition.class);
               ConnectionFactory connectionFactory = 
cfProvider.getConnectionFactory();
    
               UserCredentialsConnectionFactoryAdapter cfCredentialsAdapter = 
new UserCredentialsConnectionFactoryAdapter();
               
cfCredentialsAdapter.setTargetConnectionFactory(connectionFactory);
               
cfCredentialsAdapter.setUsername(context.getProperty(USER).getValue());
               
cfCredentialsAdapter.setPassword(context.getProperty(PASSWORD).getValue());
    
               this.cachingConnectionFactory = new 
CachingConnectionFactory(cfCredentialsAdapter);
               
this.cachingConnectionFactory.setSessionCacheSize(Integer.parseInt(context.getProperty(SESSION_CACHE_SIZE).getValue()));
    
               JmsTemplate jmsTemplate = new JmsTemplate();
               jmsTemplate.setConnectionFactory(this.cachingConnectionFactory);
               
jmsTemplate.setDefaultDestinationName(context.getProperty(DESTINATION).getValue());
               
jmsTemplate.setPubSubDomain(TOPIC.equals(context.getProperty(DESTINATION_TYPE).getValue()));
    
               // set of properties that may be good candidates for exposure 
via configuration
               jmsTemplate.setReceiveTimeout(10000);
    
               this.targetResource = 
this.finishBuildingTargetResource(jmsTemplate);
           }
    
    The JavaDoc for JMSTemplate says.
    
    Default settings for JMS Sessions are "not transacted" and 
"auto-acknowledge". As defined by the Java EE specification, the transaction 
and acknowledgement parameters are ignored when a JMS Session is created inside 
an active transaction, no matter if a JTA transaction or a Spring-managed 
transaction. To configure them for native JMS usage, specify appropriate values 
for the "sessionTransacted" and "sessionAcknowledgeMode" bean properties.
    
    If I understand this correctly it means that ConsumeJMS is always using 
auto-acknowledge which would explain my lost files on NiFi restart.
    
    Do you concur?
    
    Chris McDermott
    
    Remote Business Analytics
    STaTS/StoreFront Remote
    HPE Storage
    Hewlett Packard Enterprise
    Mobile: +1 978-697-5315
    
    
    
    
    On 9/14/16, 9:57 AM, "McDermott, Chris Kevin (MSDU - 
STaTS/StorefrontRemote)" 
<chris.mcderm...@hpe.com<mailto:chris.mcderm...@hpe.com>> wrote:
    
       Yes.
    
       Chris McDermott
    
       Remote Business Analytics
       STaTS/StoreFront Remote
       HPE Storage
       Hewlett Packard Enterprise
       Mobile: +1 978-697-5315
    
    
    
    
       On 9/14/16, 9:54 AM, "Oleg Zhurakousky" 
<ozhurakou...@hortonworks.com<mailto:ozhurakou...@hortonworks.com>> wrote:
    
           So you’re asking about ConsumeJMS?
    
    On Sep 14, 2016, at 9:49 AM, McDermott, Chris Kevin (MSDU - 
STaTS/StorefrontRemote) 
<chris.mcderm...@hpe.com<mailto:chris.mcderm...@hpe.com>> wrote:
    
    Hi Oleg,
    
    Sorry, I wasn’t more clear.  I should have stated that ConsumeJMS does not 
expose a setting for ACK mode.  Screen shot attached. So my question is which 
ACK mode does it use?
    
    Thanks,
    
    Chris McDermott
    
    Remote Business Analytics
    STaTS/StoreFront Remote
    HPE Storage
    Hewlett Packard Enterprise
    Mobile: +1 978-697-5315
    
    
    
    
    On 9/14/16, 9:41 AM, "Oleg Zhurakousky" 
<ozhurakou...@hortonworks.com<mailto:ozhurakou...@hortonworks.com>> wrote:
    
      Chris
    
      FWIW, the Get/PutJMS* are effectively deprecated processors since they 
only support one JMS provider (ActiiveMQ) and should not be used. Instead we 
recommend Publish/ConsumeJMS pair.
    
      As to your question, which specific ACK mode you are inquiring about? As 
the doc currently states, the auto-ACK may loose messages. Is that what you are 
using?
    
      Cheers
      Oleg
    
      On Sep 14, 2016, at 9:28 AM, McDermott, Chris Kevin (MSDU - 
STaTS/StorefrontRemote) 
<chris.mcderm...@hpe.com<mailto:chris.mcderm...@hpe.com><mailto:chris.mcderm...@hpe.com>>
 wrote:
    
    
      Hey folks,
    
      The GetJMSQueue processor allows configuration of the Acknowledgment Mode.
    
      Acknowledgement Mode
    
      Client Acknowledge
    
      •         Client Acknowledge
      •         Auto Acknowledge
    
      The JMS Acknowledgement Mode. Using Auto Acknowledge can cause messages 
to be lost on restart of NiFi but may provide better performance than Client 
Acknowledge.
    
    
      Can someone speak to how Acknowledgement Mode is handled by the 
ConsumeJMS processor?
    
      The reason I ask is that I seem to be losing messages on NiFi restart.
    
      Thanks,
      Chris McDermott
    
      Remote Business Analytics
      STaTS/StoreFront Remote
      HPE Storage
      Hewlett Packard Enterprise
      Mobile: +1 978-697-5315
    
    
    
    
    
    
    
    
    
    
    
    
    
    


  • ConsumeJMS and Ackn... McDermott, Chris Kevin (MSDU - STaTS/StorefrontRemote)
    • Re: ConsumeJMS... Oleg Zhurakousky
      • Re: Consum... McDermott, Chris Kevin (MSDU - STaTS/StorefrontRemote)
        • Re: Co... Oleg Zhurakousky
          • Re... McDermott, Chris Kevin (MSDU - STaTS/StorefrontRemote)
            • ... McDermott, Chris Kevin (MSDU - STaTS/StorefrontRemote)
              • ... Oleg Zhurakousky
                • ... McDermott, Chris Kevin (MSDU - STaTS/StorefrontRemote)
                • ... Oleg Zhurakousky
                • ... McDermott, Chris Kevin (MSDU - STaTS/StorefrontRemote)
                • ... Oleg Zhurakousky
            • ... Oleg Zhurakousky

Reply via email to