要创建队列列表,必须创建该列表,然后从会话对象分别创建每个队列。
队列 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 队列时,可能需要重新考虑代码中的一个或几个内容。
您可以从连接中使用目标源获取可用队列的列表。
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中有以下内容。我确实创建了一个匿名队列,但也没有发布消息。任何想法。