Created
May 19, 2022 14:44
-
-
Save markxnelson/48c6bc9cf59510990cf4c92fef88d9fb to your computer and use it in GitHub Desktop.
Example of a standalone Java JMS consumer for TEQ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.wordpress.redstack; | |
import java.sql.SQLException; | |
import javax.jms.JMSException; | |
import javax.jms.Session; | |
import javax.jms.Topic; | |
import javax.jms.TopicConnection; | |
import javax.jms.TopicConnectionFactory; | |
import javax.jms.TopicSession; | |
import oracle.AQ.AQException; | |
import oracle.jms.AQjmsFactory; | |
import oracle.jms.AQjmsSession; | |
import oracle.jms.AQjmsTextMessage; | |
import oracle.jms.AQjmsTopicSubscriber; | |
import oracle.ucp.jdbc.PoolDataSource; | |
import oracle.ucp.jdbc.PoolDataSourceFactory; | |
public class Consumer { | |
private static String username = "mark"; | |
private static String url = "jdbc:oracle:thin:@phxprod1_high?TNS_ADMIN=/home/mark/src/redstack/PHXPROD1"; | |
private static String topicName = "phx_topic"; | |
public static void main(String[] args) throws AQException, SQLException, JMSException { | |
// create a topic session | |
PoolDataSource ds = PoolDataSourceFactory.getPoolDataSource(); | |
ds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource"); | |
ds.setURL(url); | |
ds.setUser(username); | |
ds.setPassword(System.getenv("DB_PASSWORD")); | |
// create a JMS topic connection and session | |
TopicConnectionFactory tcf = AQjmsFactory.getTopicConnectionFactory(ds); | |
TopicConnection conn = tcf.createTopicConnection(); | |
conn.start(); | |
TopicSession session = (AQjmsSession) conn.createSession(true, Session.AUTO_ACKNOWLEDGE); | |
// create a subscriber on the topic | |
Topic topic = ((AQjmsSession) session).getTopic(username, topicName); | |
AQjmsTopicSubscriber subscriber = (AQjmsTopicSubscriber) session.createDurableSubscriber(topic, "BOOK"); | |
System.out.println("Waiting for messages..."); | |
// wait forever for messages to arrive and print them out | |
while (true) { | |
AQjmsTextMessage message = (AQjmsTextMessage) subscriber.receive(1_000); // 1 sec timeout | |
if (message != null) { | |
if (message.getText() != null) { | |
System.out.println(message.getText()); | |
} else { | |
System.out.println(); | |
} | |
} | |
session.commit(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment