【问题标题】:need to specify queue name with user name and password for activemq java code需要为activemq java代码指定队列名称和用户名和密码
【发布时间】:2016-10-14 23:01:17
【问题描述】:

我正在尝试编写一个连接到 activeMQ 队列的简单 java 代码,我在网上找到了 this 资源,它基本上遵循了 activeMQ 站点中的 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();

【问题讨论】:

    标签: java activemq


    【解决方案1】:

    这是一个例子

            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) {
                }
            }
        }
    }
    

    【讨论】:

    • 感谢哈森的回答!我想知道是否有另一种方法可以在不使用 JNDI 的情况下连接到 activemq 队列?
    • 我用消费者抱歉更新了我的回复,但这部分(生产者代码)与 jndi 示例相同
    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2012-06-16
    • 2017-01-20
    相关资源
    最近更新 更多