[ 
https://issues.apache.org/jira/browse/FLINK-3298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15424203#comment-15424203
 ] 

ASF GitHub Bot commented on FLINK-3298:
---------------------------------------

Github user mushketyk commented on a diff in the pull request:

    https://github.com/apache/flink/pull/2314#discussion_r75091316
  
    --- Diff: 
flink-streaming-connectors/flink-connector-activemq/src/main/java/org/apache/flink/streaming/connectors/activemq/AMQSource.java
 ---
    @@ -0,0 +1,258 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *    http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package org.apache.flink.streaming.connectors.activemq;
    +
    +import org.apache.activemq.ActiveMQConnectionFactory;
    +import org.apache.activemq.ActiveMQSession;
    +import org.apache.flink.api.common.functions.RuntimeContext;
    +import org.apache.flink.api.common.typeinfo.TypeInformation;
    +import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
    +import org.apache.flink.configuration.Configuration;
    +import 
org.apache.flink.streaming.api.functions.source.MessageAcknowledgingSourceBase;
    +import org.apache.flink.streaming.api.operators.StreamingRuntimeContext;
    +import org.apache.flink.streaming.util.serialization.DeserializationSchema;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +
    +import javax.jms.BytesMessage;
    +import javax.jms.Connection;
    +import javax.jms.Destination;
    +import javax.jms.ExceptionListener;
    +import javax.jms.JMSException;
    +import javax.jms.Message;
    +import javax.jms.MessageConsumer;
    +import javax.jms.Session;
    +import java.io.Serializable;
    +import java.util.HashMap;
    +import java.util.List;
    +
    +/**
    + * Source for reading messages from an ActiveMQ queue.
    + * <p>
    + * To create an instance of AMQSink class one should initialize and 
configure an
    + * instance of a connection factory that will be used to create a 
connection.
    + * This source is waiting for incoming messages from ActiveMQ and converts 
them from
    + * an array of bytes into an instance of the output type. If an incoming
    + * message is not a message with an array of bytes, this message is ignored
    + * and warning message is logged.
    + *
    + * @param <OUT> type of output messages
    + */
    +public class AMQSource<OUT> extends MessageAcknowledgingSourceBase<OUT, 
String>
    +   implements ResultTypeQueryable<OUT> {
    +
    +   private static final Logger LOG = 
LoggerFactory.getLogger(AMQSource.class);
    +
    +   private final ActiveMQConnectionFactory connectionFactory;
    +   private final String queueName;
    +   private final DeserializationSchema<OUT> deserializationSchema;
    +   private boolean logFailuresOnly = false;
    +   private RunningChecker runningChecker;
    +   private transient Connection connection;
    +   private transient Session session;
    +   private transient MessageConsumer consumer;
    +   private boolean autoAck;
    +   private HashMap<String, Message> unaknowledgedMessages = new 
HashMap<>();
    +
    +   /**
    +    * Create AMQSource.
    +    *
    +    * @param connectionFactory factory that will be used to create a 
connection with ActiveMQ
    +    * @param queueName name of an ActiveMQ queue to read from
    +    * @param deserializationSchema schema to deserialize incoming messages
    +    */
    +   public AMQSource(ActiveMQConnectionFactory connectionFactory, String 
queueName, DeserializationSchema<OUT> deserializationSchema) {
    +           this(connectionFactory, queueName, deserializationSchema, new 
RunningCheckerImpl());
    +   }
    +
    +   /**
    +    * Create AMQSource.
    +    *
    +    * @param connectionFactory factory that will be used to create a 
connection with ActiveMQ
    +    * @param queueName name of an ActiveMQ queue to read from
    +    * @param deserializationSchema schema to deserialize incoming messages
    +    * @param runningChecker running checker that is used to decide if the 
source is still running
    +    */
    +   AMQSource(ActiveMQConnectionFactory connectionFactory, String 
queueName, DeserializationSchema<OUT> deserializationSchema, RunningChecker 
runningChecker) {
    +           super(String.class);
    +           this.connectionFactory = connectionFactory;
    +           this.queueName = queueName;
    +           this.deserializationSchema = deserializationSchema;
    +           this.runningChecker = runningChecker;
    +   }
    +
    +   /**
    +    * Defines whether the producer should fail on errors, or only log them.
    +    * If this is set to true, then exceptions will be only logged, if set 
to false,
    +    * exceptions will be eventually thrown and cause the streaming program 
to
    +    * fail (and enter recovery).
    +    *
    +    * @param logFailuresOnly The flag to indicate logging-only on 
exceptions.
    +    */
    +   public void setLogFailuresOnly(boolean logFailuresOnly) {
    +           this.logFailuresOnly = logFailuresOnly;
    +   }
    +
    +   @Override
    +   public void open(Configuration config) throws Exception {
    +           super.open(config);
    +           // Create a Connection
    +           connection = connectionFactory.createConnection();
    +           connection.start();
    +
    +           connection.setExceptionListener(new ExceptionListener() {
    +                   @Override
    +                   public void onException(JMSException e) {
    +                           LOG.error("Received ActiveMQ exception", e);
    --- End diff --
    
    You are right. I'll update it.


> Streaming connector for ActiveMQ
> --------------------------------
>
>                 Key: FLINK-3298
>                 URL: https://issues.apache.org/jira/browse/FLINK-3298
>             Project: Flink
>          Issue Type: New Feature
>          Components: Streaming Connectors
>            Reporter: Mohit Sethi
>            Assignee: Ivan Mushketyk
>            Priority: Minor
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to