@Override public void destroy() { if (jmsMessageConsumer != null) { jmsMessageConsumer.close(); } super.destroy(); }
@Override public String produce(String lastSourceOffset, int maxBatchSize, BatchMaker batchMaker) throws StageException { int batchSize = Math.max(basicConfig.maxBatchSize, maxBatchSize); messagesConsumed += jmsMessageConsumer.take(batchMaker, getContext(), batchSize, messagesConsumed); return Utils.format("{}::{}", jmsConfig.destinationName, messagesConsumed); }
public void rollback() { try { if (jmsMessageConsumer != null) { jmsMessageConsumer.rollback(); } } catch (Exception ex) { LOG.warn("Rollback failed: {}", ex.toString(), ex); } }
@Override protected List<ConfigIssue> init() { List<ConfigIssue> issues = new ArrayList<>(); try { Properties contextProperties = new Properties(); contextProperties.setProperty( javax.naming.Context.INITIAL_CONTEXT_FACTORY, jmsConfig.initialContextFactory); contextProperties.setProperty(javax.naming.Context.PROVIDER_URL, jmsConfig.providerURL); if (jmsConfig.initialContextFactory.toLowerCase(Locale.ENGLISH).contains("oracle")) { contextProperties.setProperty("db_url", jmsConfig.providerURL); // workaround for SDC-2068 } contextProperties.putAll(jmsConfig.contextProperties); initialContext = initialContextFactory.create(contextProperties); } catch (NamingException ex) { LOG.info( Utils.format( JmsErrors.JMS_00.getMessage(), jmsConfig.initialContextFactory, jmsConfig.providerURL, ex.toString()), ex); issues.add( getContext() .createConfigIssue( JmsGroups.JMS.name(), "jmsConfig.initialContextFactory", JmsErrors.JMS_00, jmsConfig.initialContextFactory, jmsConfig.providerURL, ex.toString())); } if (issues.isEmpty()) { try { connectionFactory = (ConnectionFactory) initialContext.lookup(jmsConfig.connectionFactory); } catch (NamingException ex) { LOG.info( Utils.format( JmsErrors.JMS_01.getMessage(), jmsConfig.initialContextFactory, ex.toString()), ex); issues.add( getContext() .createConfigIssue( JmsGroups.JMS.name(), "jmsConfig.initialContextFactory", JmsErrors.JMS_01, jmsConfig.connectionFactory, ex.toString())); } } if (issues.isEmpty()) { jmsMessageConsumer = jmsMessageConsumerFactory.create( initialContext, connectionFactory, basicConfig, credentialsConfig, jmsConfig, jmsMessageConverter); issues.addAll(jmsMessageConsumer.init(getContext())); } // no dependencies on the above for initialization issues.addAll(jmsMessageConverter.init(getContext())); return issues; }
@Override public void commit(String offset) throws StageException { jmsMessageConsumer.commit(); }