O JMS Support 2.0 funciona bem com o AMQ Classic 6.x, mas se eu usar o activemq-pool
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>6.1.3</version>
</dependency>
Eu entendo
java.lang.UnsupportedOperationException: createContext() is not supported
at org.apache.activemq.jms.pool.PooledConnectionFactory.createContext(PooledConnectionFactory.java:280)
Portanto, o suporte ao JMS 2.0 parece não ser fornecido aqui (embora a dependência transitória correta do amq-client esteja incluída).
Alguma razão para isso?
O que você está vendo é esperado. Recomendo que você use este pool que é baseado no código-base do ActiveMQ Classic, mas tem suporte total para JMS 2.
Dito isso, vale a pena notar que nenhuma versão da implementação do cliente JMS enviada com o ActiveMQ Classic suporta totalmente o JMS 2, mesmo na versão mais recente 6.x. Ele ainda não tem suporte para os seguintes recursos e métodos do JMS 2:
JMSConsumer.receiveBody(Class)
JMSConsumer.receiveBody(Class, long)
JMSConsumer.receiveBodyNoWait(Class)
JMSProducer.setDeliveryDelay(long)
JMSProducer.getDeliveryDelay()
MessageProducer.setDeliveryDelay(long)
MessageProducer.getDeliveryDelay()
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)
Se você quiser uma implementação completa do JMS 2, recomendo o ActiveMQ Artemis .