Package org.apache.beam.sdk.io.jms
Class JmsIO
java.lang.Object
org.apache.beam.sdk.io.jms.JmsIO
An unbounded source for JMS destinations (queues or topics).
Reading from a JMS destination
JmsIO source returns unbounded collection of JMS records as PCollection<JmsRecord>
. A
JmsRecord
includes JMS headers and properties, along with the JMS TextMessage
payload.
To configure a JMS source, you have to provide a ConnectionFactory
and the
destination (queue or topic) where to consume. The following example illustrates various options
for configuring the source:
pipeline.apply(JmsIO.read()
.withConnectionFactory(myConnectionFactory)
.withQueue("my-queue")
// above two are required configuration, returns PCollection<JmsRecord>
// rest of the settings are optional
It is possible to read any type of JMS Message
into a custom POJO using the
following configuration:
pipeline.apply(JmsIO.<T>readMessage()
.withConnectionFactory(myConnectionFactory)
.withQueue("my-queue")
.withMessageMapper((MessageMapper<T>) message -> {
// code that maps message to T
})
.withCoder(
// a coder for T
)
Writing to a JMS destination
JmsIO sink supports writing text messages to a JMS destination on a broker. To configure a JMS
sink, you must specify a ConnectionFactory
and a Destination
name. For instance:
pipeline
.apply(...) // returns PCollection<String>
.apply(JmsIO.write()
.withConnectionFactory(myConnectionFactory)
.withQueue("my-queue")
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
static interface
An interface used byJmsIO.Read
for converting each jmsMessage
into an element of the resultingPCollection
.static class
APTransform
to read from a JMS destination.static class
APTransform
to write to a JMS queue. -
Method Summary
Modifier and TypeMethodDescriptionstatic JmsIO.Read
<JmsRecord> read()
static <T> JmsIO.Read
<T> static <EventT> JmsIO.Write
<EventT> write()
-
Method Details
-
read
-
readMessage
-
write
-