当前位置: 首页 > 知识库问答 >
问题:

创建Activemq队列列表

金秦斩
2023-03-14

我现有的使用阻止队列的代码创建了一个阻止队列列表(如私有列表

任何帮助将不胜感激。

共有2个答案

戈念
2023-03-14

要创建队列列表,必须创建该列表,然后从会话对象分别创建每个队列。

队列 q = 会话创建队列(“某个队列名称”)

然而,从这个意义上来说,这并没有真正“创建”队列,因为队列是ActiveMQ进程/服务器中的一个持久“事物”。这将仅创建对给定标识符/名称的ActiveMQ队列的引用。

我不知道为什么你需要十个队列。通常,每个事件类型或用例(或类似)都有一个队列,然后使用并发使用者进行并行处理。

但是,当然,您始终可以通过简单的for循环来执行类似操作,一次创建一个队列并将它们附加到数组列表。请注意,您无法获取仅包含 Event 对象的类型安全队列。

但是,您可以发送带有事件的ObjectMessage。只需创建一个:

Event event = createEvent(..); // Given "Event" is serializable (need to be able to persist it).
Message m = session.createObjectMessage(event);
// Send message as usual in ActiveMQ.

在从阻塞队列转换为持久性 ActiveMQ 队列时,可能需要重新考虑代码中的一个或几个内容。

林德华
2023-03-14

您可以从连接中使用目标源获取可用队列的列表。

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
ActiveMQConnection connection = (ActiveMQConnection)connectionFactory.createConnection();
DestinationSource ds = connection.getDestinationSource();
Set<ActiveMQQueue> queues = ds.getQueues();

编辑:要创建队列,请查看ActiveMQ Hello world示例链接。代码的作用是创建与嵌入jvm中的ActiveMQ代理的连接

// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");

// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();

// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// Create the destination (Topic or Queue)
Destination destination = session.createQueue("TEST.FOO");

上面代码中可能不明显的一点是:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");

不仅会设置与代理的连接,还会在连接中嵌入一个代理(如果还没有)。本页底部有解释

可以关闭该功能(您需要一个代理,但是如果您想以其他方式设置它):

ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?create=false");

我真的很喜欢ActiveMQ,但是它提供的不仅仅是持久性,所以在做简单的事情时,事情可能看起来有点过于复杂。但是希望这不会吓到你。

 类似资料:
  • 问题内容: 我正在尝试使用Spring Reactor 3组件和Spring Integration从JMS队列创建反应式流(Flux)。 我正在尝试从JMS队列(使用Spring Integration的ActiveMQ)创建客户端的响应流(Spring Reactor 3 Flux),以使客户端异步获取JMS消息。我相信我已经正确连接了所有东西,但是在服务器停止之前,客户端不会收到任何JMS消

  • 因为正如我在Active MQ Artemis文档中看到的,持久值是一个布尔值,但在amqpnetlite库中它是一个uint,我的理解是,超过0的所有内容都应该是true,而0应该是false。 起初,这种行为非常奇怪:即使当Aretemis Web界面显示为持久队列时,一旦没有用户连接,它也会被删除。 我发现:ActiveMQ Artemis queue在关闭消费客户机后被删除,这描述了即使是

  • 我是activeMQ的新手,在将消息从驻留在另一台服务器上的消息生成器推送到activeMQ定义的队列时遇到问题。 我在activeMQ上使用camel routes创建的应用程序中有几个队列。我尝试从另一台服务器上的应用程序对这些队列执行远程JNDI查找。我使用了来自http://activemq.apache.org/jndi-support.html页面的activemq文档片段。 我可以连

  • 我正在使用SpringReactor3组件和SpringIntegration进行实验,以从JMS队列创建反应流(Flux)。 我试图从JMS队列(使用SpringIntegration的ActiveMQ)创建一个反应流(SpringReactor3Flux),以供客户端异步获取JMS消息。我相信我已经正确连接了所有内容,但在服务器停止之前,客户端不会接收任何JMS消息。然后,所有消息都被“推送”

  • 未创建我的exchange和dlq。我在下面的YML中有以下内容。我确实创建了一个匿名队列,但也没有发布消息。任何想法。