JMS 支持 2.0 可以与 AMQ Classic 6.x 配合使用,但如果我使用 activemq-pool
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>6.1.3</version>
</dependency>
我明白了
java.lang.UnsupportedOperationException: createContext() is not supported
at org.apache.activemq.jms.pool.PooledConnectionFactory.createContext(PooledConnectionFactory.java:280)
因此,这里似乎没有提供 JMS 2.0 支持(尽管包含了正确的瞬态 amq-client 依赖项)。
有什么原因吗?
您所看到的是预期的。我建议您使用这个池,它基于 ActiveMQ Classic 代码库,但完全支持 JMS 2。
也就是说,值得注意的是 ActiveMQ Classic 附带的 JMS 客户端实现的 no 版本完全支持 JMS 2,即使在最新的 6.x 版本中也是如此。它仍然缺乏对以下 JMS 2 功能和方法的支持:
JMSProducer.setAsync(CompletionListener)
JMSProducer.getAsync()
MessageProducer.send(Destination, Message, CompletionListener)
MessageProducer.send(Destination, Message, int, int, long, CompletionListener)
MessageProducer.send(Message, CompletionListener)
MessageProducer.send(Message, int, int, long, CompletionListener)
Session.createSharedConsumer(Topic, String)
Session.createSharedConsumer(Topic, String, String)
Session.createSharedDurableConsumer(Topic, String)
Session.createSharedDurableConsumer(Topic, String, String)
JMSContext.createSharedConsumer(Topic, String)
JMSContext.createSharedConsumer(Topic, String, String)
JMSContext.createSharedDurableConsumer(Topic, String)
JMSContext.createSharedDurableConsumer(Topic, String, String)