ActiveMQ Classic JMS 2.0 不支持 PooledConnectionFactory

问题描述 投票:0回答:1

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
1个回答
0
投票

您所看到的是预期的。我建议您使用这个池,它基于 ActiveMQ Classic 代码库,但完全支持 JMS 2。

也就是说,值得注意的是 ActiveMQ Classic 附带的 JMS 客户端实现的 no 版本完全支持 JMS 2,即使在最新的 6.x 版本中也是如此。它仍然缺乏对以下 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)
      
      
  • 如果您想要完整的 JMS 2 实现,我推荐
ActiveMQ Artemis

© www.soinside.com 2019 - 2024. All rights reserved.