Class JmsIO.Write<EventT>
- java.lang.Object
-
- org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<EventT>,WriteJmsResult<EventT>>
-
- org.apache.beam.sdk.io.jms.JmsIO.Write<EventT>
-
- All Implemented Interfaces:
java.io.Serializable,JmsIO.ConnectionFactoryContainer<JmsIO.Write<EventT>>,org.apache.beam.sdk.transforms.display.HasDisplayData
- Enclosing class:
- JmsIO
public abstract static class JmsIO.Write<EventT> extends org.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<EventT>,WriteJmsResult<EventT>> implements JmsIO.ConnectionFactoryContainer<JmsIO.Write<EventT>>
APTransformto write to a JMS queue. SeeJmsIOfor more information on usage and configuration.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description Write()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description WriteJmsResult<EventT>expand(org.apache.beam.sdk.values.PCollection<EventT> input)JmsIO.Write<EventT>withConnectionFactory(javax.jms.ConnectionFactory connectionFactory)Specify the JMS connection factory to connect to the JMS broker.JmsIO.Write<EventT>withConnectionFactoryProviderFn(org.apache.beam.sdk.transforms.SerializableFunction<java.lang.Void,? extends javax.jms.ConnectionFactory> connectionFactoryProviderFn)Specify a JMS connection factory provider function to connect to the JMS broker.JmsIO.Write<EventT>withPassword(java.lang.String password)Define the password to connect to the JMS broker (authenticated).JmsIO.Write<EventT>withQueue(java.lang.String queue)Specify the JMS queue destination name where to send messages to.JmsIO.Write<EventT>withRetryConfiguration(RetryConfiguration retryConfiguration)Specify the JMS retry configuration.JmsIO.Write<EventT>withTopic(java.lang.String topic)Specify the JMS topic destination name where to send messages to.JmsIO.Write<EventT>withTopicNameMapper(org.apache.beam.sdk.transforms.SerializableFunction<EventT,java.lang.String> topicNameMapper)Specify the JMS topic destination name where to send messages to dynamically.JmsIO.Write<EventT>withUsername(java.lang.String username)Define the username to connect to the JMS broker (authenticated).JmsIO.Write<EventT>withValueMapper(org.apache.beam.sdk.transforms.SerializableBiFunction<EventT,javax.jms.Session,javax.jms.Message> valueMapper)Map theEventTobject to aMessage.-
Methods inherited from class org.apache.beam.sdk.transforms.PTransform
addAnnotation, compose, compose, getAdditionalInputs, getAnnotations, getDefaultOutputCoder, getDefaultOutputCoder, getDefaultOutputCoder, getKindString, getName, getResourceHints, populateDisplayData, setDisplayData, setResourceHints, toString, validate, validate
-
-
-
-
Method Detail
-
withConnectionFactory
public JmsIO.Write<EventT> withConnectionFactory(javax.jms.ConnectionFactory connectionFactory)
Specify the JMS connection factory to connect to the JMS broker.The
ConnectionFactoryobject has to be serializable, if it is not consider using thewithConnectionFactoryProviderFn(org.apache.beam.sdk.transforms.SerializableFunction<java.lang.Void, ? extends javax.jms.ConnectionFactory>)For instance:
.apply(JmsIO.write().withConnectionFactory(myConnectionFactory)- Specified by:
withConnectionFactoryin interfaceJmsIO.ConnectionFactoryContainer<EventT>- Parameters:
connectionFactory- The JMSConnectionFactory.- Returns:
- The corresponding
JmsIO.Read.
-
withConnectionFactoryProviderFn
public JmsIO.Write<EventT> withConnectionFactoryProviderFn(org.apache.beam.sdk.transforms.SerializableFunction<java.lang.Void,? extends javax.jms.ConnectionFactory> connectionFactoryProviderFn)
Specify a JMS connection factory provider function to connect to the JMS broker. Use this method in case yourConnectionFactoryobjects are themselves not serializable, but you can recreate them as needed with aSerializableFunctionproviderFor instance:
pipeline.apply(JmsIO.write().withConnectionFactoryProviderFn(() -> new MyJmsConnectionFactory());- Specified by:
withConnectionFactoryProviderFnin interfaceJmsIO.ConnectionFactoryContainer<EventT>- Parameters:
connectionFactoryProviderFn- aSerializableFunctionthat creates aConnectionFactory- Returns:
- The corresponding
JmsIO.Write
-
withQueue
public JmsIO.Write<EventT> withQueue(java.lang.String queue)
Specify the JMS queue destination name where to send messages to. TheJmsIO.Writeacts as a producer on the queue.This method is exclusive with
withTopic(String). The user has to specify a destination: queue, topic, or topicNameMapper.For instance:
.apply(JmsIO.write().withQueue("my-queue")- Parameters:
queue- The JMS queue name where to send messages to.- Returns:
- The corresponding
JmsIO.Read.
-
withTopic
public JmsIO.Write<EventT> withTopic(java.lang.String topic)
Specify the JMS topic destination name where to send messages to. TheJmsIO.Readacts as a publisher on the topic.This method is exclusive with
withQueue(String). The user has to specify a destination: queue, topic, or topicNameMapper.For instance:
.apply(JmsIO.write().withTopic("my-topic")- Parameters:
topic- The JMS topic name.- Returns:
- The corresponding
JmsIO.Read.
-
withUsername
public JmsIO.Write<EventT> withUsername(java.lang.String username)
Define the username to connect to the JMS broker (authenticated).
-
withPassword
public JmsIO.Write<EventT> withPassword(java.lang.String password)
Define the password to connect to the JMS broker (authenticated).
-
withTopicNameMapper
public JmsIO.Write<EventT> withTopicNameMapper(org.apache.beam.sdk.transforms.SerializableFunction<EventT,java.lang.String> topicNameMapper)
Specify the JMS topic destination name where to send messages to dynamically. TheJmsIO.Writeacts as a publisher on the topic.This method is exclusive with
withQueue(String)andwithTopic(String). The user has to specify aSerializableFunctionthat takesEventTobject as a parameter, and returns the topic name depending of the content of the event object.For example:
SerializableFunction<CompanyEvent, String> topicNameMapper = (event -> String.format( "company/%s/employee/%s", event.getCompanyName(), event.getEmployeeId()));.apply(JmsIO.write().withTopicNameMapper(topicNameNapper)- Parameters:
topicNameMapper- The function returning the dynamic topic name.- Returns:
- The corresponding
JmsIO.Write.
-
withValueMapper
public JmsIO.Write<EventT> withValueMapper(org.apache.beam.sdk.transforms.SerializableBiFunction<EventT,javax.jms.Session,javax.jms.Message> valueMapper)
Map theEventTobject to aMessage.For instance:
SerializableBiFunction<SomeEventObject, Session, Message> valueMapper = (e, s) -> { try { TextMessage msg = s.createTextMessage(); msg.setText(Mapper.MAPPER.toJson(e)); return msg; } catch (JMSException ex) { throw new JmsIOException("Error!!", ex); } };.apply(JmsIO.write().withValueMapper(valueNapper)- Parameters:
valueMapper- The function returning theMessage- Returns:
- The corresponding
JmsIO.Write.
-
withRetryConfiguration
public JmsIO.Write<EventT> withRetryConfiguration(RetryConfiguration retryConfiguration)
Specify the JMS retry configuration. TheJmsIO.Writeacts as a publisher on the topic.Allows a retry for failed published messages, the user should specify the maximum number of retries, a duration for retrying and a maximum cumulative retries. By default, the duration for retrying used is 15s and the maximum cumulative is 1000 days
RetryConfigurationFor example:
orRetryConfiguration retryConfiguration = RetryConfiguration.create(5);
orRetryConfiguration retryConfiguration = RetryConfiguration.create(5, Duration.standardSeconds(30), null);RetryConfiguration retryConfiguration = RetryConfiguration.create(5, Duration.standardSeconds(30), Duration.standardDays(15));.apply(JmsIO.write().withPublicationRetryPolicy(publicationRetryPolicy)- Parameters:
retryConfiguration- The retry configuration that should be used in case of failed publications.- Returns:
- The corresponding
JmsIO.Write.
-
expand
public WriteJmsResult<EventT> expand(org.apache.beam.sdk.values.PCollection<EventT> input)
- Specified by:
expandin classorg.apache.beam.sdk.transforms.PTransform<org.apache.beam.sdk.values.PCollection<EventT>,WriteJmsResult<EventT>>
-
-