如何创建新的目标

 常见问题解答 > 使用 Apache ActiveMQ Classic > 如何创建新的目标

在 ActiveMQ Classic 中,您**不必**在使用目标之前预先创建它们。ActiveMQ Classic 代理会根据需要自动创建与目标关联的物理资源(即,当消息被发送到代理上的新目标时)。

这意味着客户端可以通过以下方式动态创建新的队列或主题:

  • 在 JMS 会话上调用 createQueue() 或 createTopic()
  • 创建 ActiveMQTopic 或 ActiveMQQueue 的实例,并可能将其注册到 JNDI 中

代理会自动为您创建物理目标。这避免了花费大量时间创建要使用的每个单独的目标,然后可能将其暴露在某些 JNDI 提供程序中。

此外,如果您使用 JNDI 查找连接工厂和目标,则可以使用属性文件指定要默认创建的目标。有关更多详细信息,请参见JNDI 支持

在启动时创建目标

这是完全可选的,但从 4.1 版本开始,您可以配置启动目标以指定代理启动时自动创建的目标。

限制目标的创建

如果您需要限制对目标的访问或创建,请使用安全选项禁用为某些用户自动创建目标。

客户端目标对象与服务器端资源不同

请注意,ActiveMQ Classic 代理只会在实际向目标发送消息时为目标创建服务器端资源。因此,您可以创建任意数量的 ActiveMQTopic 和 ActiveMQQueue 实例,而不会产生任何实际开销,直到您实际将消息发送到代理上的这些实例。因此,JMS 客户端创建新的 ActiveMQQueue POJO 并不意味着您正在创建服务器端队列资源。

将 ActiveMQQueue 和 ActiveMQTopic 类视为类似于 java.net.URL。它们只是引用服务器端资源的名称,这些资源在使用时会自动创建。
这意味着不同的客户端创建不同的 ActiveMQQueue 实例,如果名称相同,它们将与 JMS 代理上的相同物理队列进行通信。

您可以使用JMX浏览当前可用的队列和主题。您也可以使用JMX MBean 创建所需的目的地。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据Apache 许可证 2.0获得许可。