【问题标题】:ActiveMQ connect to existing queue at an address/portActiveMQ 在地址/端口连接到现有队列
【发布时间】:2015-07-10 21:58:14
【问题描述】:

我应该在端口 61616 的地址 10.7.1.10 处将消息发送到名为“IngestGenericJSONQueue”的 ActiveMQ 队列。我可以创建一个 ActiveMQConnectionFactory 对象,但是如何查找现有队列?到目前为止,我只找到了 session.createQueue() 函数,但我不确定它是用于创建与现有队列的连接,还是仅用于创建全新的队列。如何通过名称连接到现有的 activemq 队列?

ConnectionFactory cFactory = new ActiveMQConnectionFactory("tcp://10.7.1.10:61616");
Connection connection = cFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

Destination queue = session.createQueue("IngestGenericJSONQueue");

System.out.println("queue connected");

MessageProducer producer = session.createProducer(queue);
TextMessage m = session.createTextMessage();
m.setText(jsonStix.toString());

producer.send(m);

System.out.println("done");

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    ActiveMQ 按需创建队列和主题,因此如果在创建生产者时没有该名称的现有队列,则会创建一个新队列。如果队列已经存在,则生产者将发送到该队列。

    您可以使用 JMX 或 Web 控制台等管理工具来探索正在运行的代理,以查看已经存在哪些队列。

    【讨论】:

    • 似乎即使我已经使用特定队列启动了 ActiveMQ 代理,但当我使用“createQueue”作为目标时,消息不会持久化。但是,当我通过 Web 控制台发送时,它们在重新启动时仍然存在,对此 Tim 有什么想法吗?
    • 谢谢蒂姆,可能是我正在使用的 Active MQ 容器的问题,尽管我已经设置了持久存储。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多