我正在运行ActiveMQ 5.14.5。我有一个包含一些待处理消息的队列。控制台的屏幕截图:
没有活跃的消费者。
控制台报告有21651条消息。但是,如果我尝试查看它们,它似乎是空的:
此外,当我尝试在receive()
上呼叫org.apache.activemq.jms.pool.PooledConnection
时,它会阻止并且不会收到任何消息。
我非常确定那里有 条消息,应该检索它们。这曾经起作用,并且已停止工作。
对此有解释吗?日志中没有任何错误。
编辑:
我在Clojure中使用Java客户端。我不想分享它,因为它可能会混淆事情,但现在就是这样。我在一些不同的线程中使用了一个Pooled工厂。但我认为使用控制台的上述示例是自包含的。
(let [factory (org.apache.activemq.ActiveMQConnectionFactory.
"Username"
"Password"
"URI")
pooled-connection-factory (org.apache.activemq.jms.pool.PooledConnectionFactory.)]
(.setConnectionFactory pooled-connection-factory factory)
(.start pooled-connection-factory)
(with-open [connection (.createConnection factory)]
(let [session (.createSession connection false, javax.jms.Session/AUTO_ACKNOWLEDGE)
destination (.createQueue session (:queue-name config))
consumer (.createConsumer session destination)]
(.start connection)
(loop [message (.receive consumer)]
(println (.getText ^org.apache.activemq.command.ActiveMQTextMessage message))
(recur (.receive consumer))))))