Java ActiveMQ生产者从PostgreSQL表中的内容发送消息
有没有人可以为我提供一个参考,让我了解ActiveMQ生产者编码如何从PostgreSQL表中的内容发送消息,但我希望我可以将表中的所有行发送为一条一条的消息。。。 我从某人那里得到了一个参考,它的内容和我上面想要的一样,但它告诉我如何从.txt文件中的内容获取所有消息。。。 到目前为止,我得到了这个:Java ActiveMQ生产者从PostgreSQL表中的内容发送消息,java,sql,postgresql,activemq,Java,Sql,Postgresql,Activemq,有没有人可以为我提供一个参考,让我了解ActiveMQ生产者编码如何从PostgreSQL表中的内容发送消息,但我希望我可以将表中的所有行发送为一条一条的消息。。。 我从某人那里得到了一个参考,它的内容和我上面想要的一样,但它告诉我如何从.txt文件中的内容获取所有消息。。。 到目前为止,我得到了这个: package testMQDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res
package testMQDB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ProducerDB {
public static void ProducerDB(String[] args){
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/"TestDB, "admin", "admin");
c.setAutoCommit(false);
System.out.println("----------------------------");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM MESSAGES;" );
while ( rs.next() ) {
String message = rs.getString("MESSAGE");
System.out.println( "Message = " + message );
if (message.equals(true)){
// write the ActiveMQ code here?
}
}
rs.close();
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("----------------------------");
System.out.println("Message sent successfully");
}
}
为什么不使用camel来简化呢 fromsql:select*fromtable?maxMessagesPerPoll=1&dataSource=pg.toactivemq:queue:customers 得到了答案
package TestMQDB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ProducerDB {
public static void ProducerDB(String[] args){
ConnectionFactory factory = null;
javax.jms.Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/"TestDB, "admin", "admin");
c.setAutoCommit(false);
System.out.println("----------------------------");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM MESSAGES;");
while (rs.next()) {
String message = rs.getString("MESSAGE");
System.out.println("Message = " + message);
try {
factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("TestQueue");
producer = session.createProducer(destination);
TextMessage mssg = session.createTextMessage(message);
System.out.println("Sent: " + mssg.getText());
producer.send(mssg);
}
catch (JMSException e) {
e.printStackTrace();
}
}
rs.close();
stmt.close();
c.close();
}
catch (Exception e) {
System.err.println(e.getClass().getName()+": "+ e.getMessage());
}
System.out.println("----------------------------");
System.out.println("Message sent successfully");
}
}
有没有办法不使用骆驼?但如果没有其他方法,我会使用骆驼…顺便说一句,我已经更新了我的问题。。。
public static void ProducerDB(String[] args){
ConnectionFactory factory = null;
javax.jms.Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/"TestDB, "admin", "admin");
c.setAutoCommit(false);
System.out.println("----------------------------");
factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("TestQueue");
producer = session.createProducer(destination);
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM MESSAGES;");
while (rs.next()) {
String message = rs.getString("MESSAGE");
System.out.println("Message = " + message);
try {
TextMessage mssg = session.createTextMessage(message);
System.out.println("Sent: " + mssg.getText());
producer.send(mssg);
}
catch (JMSException e) {
e.printStackTrace();
}
}
}catch (Exception e) {
System.err.println(e.getClass().getName()+": "+ e.getMessage());
}finally{
if (c != null) {
c.close();
}
if (connection != null) {
connection.close();
}
}
System.out.println("----------------------------");
System.out.println("Message sent successfully");
}
package TestMQDB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ProducerDB {
public static void ProducerDB(String[] args){
ConnectionFactory factory = null;
javax.jms.Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/"TestDB, "admin", "admin");
c.setAutoCommit(false);
System.out.println("----------------------------");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM MESSAGES;");
while (rs.next()) {
String message = rs.getString("MESSAGE");
System.out.println("Message = " + message);
try {
factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("TestQueue");
producer = session.createProducer(destination);
TextMessage mssg = session.createTextMessage(message);
System.out.println("Sent: " + mssg.getText());
producer.send(mssg);
}
catch (JMSException e) {
e.printStackTrace();
}
}
rs.close();
stmt.close();
c.close();
}
catch (Exception e) {
System.err.println(e.getClass().getName()+": "+ e.getMessage());
}
System.out.println("----------------------------");
System.out.println("Message sent successfully");
}
}