queue和server configuration in the activemq-messaging subsystem中的jms-queue声明有什么区别
queue能否与MessageDriven bean一起使用而不是与jms-queue一起使用
我使用的是Wildlfy 19和Artemis 2.12.0
发布于 2021-09-16 21:51:27
MQTT支持JMS,但它也支持行业标准协议,如AMQP、STOMP、OpenWire和ActiveMQ。因此,代理的底层address model不是特定于JMS的,而是更通用和灵活的,以便支持许多不同的用例。
裸queue指的是来自ActiveMQ Artemis的底层“核心”队列。我相信WildFly公开了这个低级组件来支持不可预见的用例。queue配置提供了对address和routing-type的控制,这是ActiveMQ Artemis地址模型的另外两个主要组件。
jms-queue指的是传统的基于JMS的资源,MDB和其他基于JMS的应用程序组件将在Java/Jakarta EE应用服务器中使用这些资源。它让您可以控制queue不能控制的JNDI条目。它就像一种熟悉的核心queue的“包装器”。这就是为什么两者之间的属性和操作有如此多的重叠。
除非万不得已,否则实在没有理由使用queue来代替jms-queue。对于几乎所有的用例,jms-queue的配置和理解都更加简单。使用queue的唯一原因是,如果您需要以jms-queue不允许的方式控制地址和路由类型。这对于JMS应用程序来说是非常不可能的。
例如,可以向queue发送消息或使用来自queue的消息,但是由于JMS缺乏配置JNDI绑定的方法,因此JMS客户端必须使用javax.jms.Session.createQueue(String)直接实例化队列。但是,不鼓励使用这种方法,因为它会降低应用程序的可移植性。
https://stackoverflow.com/questions/69214102
复制相似问题