需要为 activemq java 代码指定带有用户名和密码的队列名称
need to specify queue name with user name and password for activemq java code
我正在尝试编写连接到 activeMQ 队列的简单 java 代码,我在 activeMQ 站点中找到了 this resource online which basically follow the Hello World 示例。我正在尝试在队列名称旁边指定用户名和密码,但我无法在网上找到任何有用的资源,因此我们将不胜感激。
我在生产者代码中进行了以下更改,但我不确定如何指定工厂名称以及我是否正确指定了用户名和密码?
// First create a connection
InitialContext initCtx = new InitialContext();
javax.jms.ConnectionFactory qcf = (javax.jms.ConnectionFactory) initCtx.lookup(factoryName);
Connection connection = qcf.createConnection("admin","admin");
connection.start();
这里有一个例子
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,
"tcp://localhost:61616");
props.put("topic." + "TOPICNAME", "TOPICNAME");
InitialContext ic = new InitialContext(props);
ConnectionFactory cf1 = (ConnectionFactory) ic.lookup("ConnectionFactory");
writeDestination = (Topic) ic.lookup("TOPICNAME");
writeDestConnection = cf1.createConnection("user", "pwd");
writeDestConnection.setClientID("durableSubscriber_" + "TOPICNAME");
writeDestSession = writeDestConnection.createSession(false,Session.AUTO_ACKNOWLEDGE);
writeDestProducer = writeDestSession.createProducer(writeDestination);
writeDestConnection.start();
TextMessage message = writeDestSession.createTextMessage(json);
message.setStringProperty("clientID", "ifYouNeed");
writeDestProducer.send(message);
http://activemq.apache.org/jndi-support.html
这是另一个没有 jndi 的例子:
public static void main(String[] args) throws JMSException {
Connection conn = null;
try {
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
conn = cf.createConnection("user", "pwd");
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(session.createQueue("queueName"));
conn.start();
TextMessage msg = null;
while ((msg = (TextMessage) consumer.receive()) != null) {
System.out.println("Received message is: " + msg.getText());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
}
}
}
我正在尝试编写连接到 activeMQ 队列的简单 java 代码,我在 activeMQ 站点中找到了 this resource online which basically follow the Hello World 示例。我正在尝试在队列名称旁边指定用户名和密码,但我无法在网上找到任何有用的资源,因此我们将不胜感激。
我在生产者代码中进行了以下更改,但我不确定如何指定工厂名称以及我是否正确指定了用户名和密码?
// First create a connection
InitialContext initCtx = new InitialContext();
javax.jms.ConnectionFactory qcf = (javax.jms.ConnectionFactory) initCtx.lookup(factoryName);
Connection connection = qcf.createConnection("admin","admin");
connection.start();
这里有一个例子
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,
"tcp://localhost:61616");
props.put("topic." + "TOPICNAME", "TOPICNAME");
InitialContext ic = new InitialContext(props);
ConnectionFactory cf1 = (ConnectionFactory) ic.lookup("ConnectionFactory");
writeDestination = (Topic) ic.lookup("TOPICNAME");
writeDestConnection = cf1.createConnection("user", "pwd");
writeDestConnection.setClientID("durableSubscriber_" + "TOPICNAME");
writeDestSession = writeDestConnection.createSession(false,Session.AUTO_ACKNOWLEDGE);
writeDestProducer = writeDestSession.createProducer(writeDestination);
writeDestConnection.start();
TextMessage message = writeDestSession.createTextMessage(json);
message.setStringProperty("clientID", "ifYouNeed");
writeDestProducer.send(message);
http://activemq.apache.org/jndi-support.html
这是另一个没有 jndi 的例子:
public static void main(String[] args) throws JMSException {
Connection conn = null;
try {
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
conn = cf.createConnection("user", "pwd");
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(session.createQueue("queueName"));
conn.start();
TextMessage msg = null;
while ((msg = (TextMessage) consumer.receive()) != null) {
System.out.println("Received message is: " + msg.getText());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
}
}
}