首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用ActiveMQ添加JNDI目的地(主题和队列)?

ActiveMQ是一个开源的消息中间件,它实现了Java Message Service (JMS) API,提供了可靠的消息传递机制。JNDI(Java Naming and Directory Interface)是Java命名和目录接口,它提供了统一的访问命名和目录服务的方式。

要使用ActiveMQ添加JNDI目的地(主题和队列),可以按照以下步骤进行操作:

  1. 配置ActiveMQ服务器:首先,需要下载和安装ActiveMQ服务器。可以从ActiveMQ官方网站(https://activemq.apache.org/)下载最新版本的ActiveMQ,并按照官方文档进行安装和配置。
  2. 创建JNDI上下文:在ActiveMQ安装目录下的conf文件夹中,找到activemq.xml文件,编辑该文件。在<broker>标签内部,添加以下配置:
代码语言:txt
复制
<broker>
  ...
  <managementContext>
    <managementContext createConnector="false"/>
  </managementContext>
  <persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb"/>
  </persistenceAdapter>
  <transportConnectors>
    <transportConnector name="openwire" uri="tcp://localhost:61616"/>
  </transportConnectors>
  <destinationPolicy>
    <policyMap>
      <policyEntries>
        <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
          <pendingSubscriberPolicy>
            <vmCursor/>
          </pendingSubscriberPolicy>
        </policyEntry>
        <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
          <pendingQueuePolicy>
            <vmQueueCursor/>
          </pendingQueuePolicy>
        </policyEntry>
      </policyEntries>
    </policyMap>
  </destinationPolicy>
  <jmsBridgeConnectors>
    <jmsBridgeConnector name="default" uri="tcp://remote-activemq:61616" userName="admin" password="password"/>
  </jmsBridgeConnectors>
</broker>

这个配置文件中,我们定义了一个名为default的JMS桥接连接器,它连接到远程的ActiveMQ服务器。你可以根据实际需求进行配置。

  1. 创建JNDI资源文件:在ActiveMQ安装目录下的conf文件夹中,创建一个名为jndi.properties的文件,并添加以下内容:
代码语言:txt
复制
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616

这个文件指定了JNDI的初始上下文工厂和提供者URL。

  1. 创建Java代码:在Java项目中,创建一个类,并添加以下代码:
代码语言:txt
复制
import javax.jms.*;
import javax.naming.*;

public class ActiveMQJNDIExample {
    public static void main(String[] args) {
        try {
            // 创建JNDI上下文
            Context jndiContext = new InitialContext();

            // 查找连接工厂
            ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("ConnectionFactory");

            // 创建连接
            Connection connection = connectionFactory.createConnection();

            // 启动连接
            connection.start();

            // 创建会话
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            // 查找目的地
            Destination destination = (Destination) jndiContext.lookup("YourDestinationName");

            // 创建生产者
            MessageProducer producer = session.createProducer(destination);

            // 创建消息
            TextMessage message = session.createTextMessage("Hello, ActiveMQ!");

            // 发送消息
            producer.send(message);

            // 关闭连接
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例代码中,我们使用JNDI查找连接工厂和目的地,并创建连接、会话、生产者。然后,创建一条文本消息并发送到目的地。

  1. 运行代码:编译并运行Java代码,如果一切正常,消息将被发送到ActiveMQ服务器上的目的地。

需要注意的是,上述代码中的YourDestinationName需要替换为实际的目的地名称。

推荐的腾讯云相关产品:腾讯云消息队列 CMQ(Cloud Message Queue),它是一种高可靠、高可用、分布式的消息队列服务。CMQ提供了队列模型和主题模型,可以满足不同场景下的消息传递需求。具体产品介绍和链接地址请参考腾讯云官方网站。

以上是关于如何使用ActiveMQ添加JNDI目的地(主题和队列)的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

消息队列 ActiveMQ 、RocketMQ 、RabbitMQ Kafka 如何选择?

它是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能削峰降低系统耦合性。...,避免某一刻流量过导致应用系统挂掉的情况; 目前使用较多的消息队列ActiveMQ 、RocketMQ 、RabbitMQ Kafka 等。...为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行; 异步处理 具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件注册短信。 对于该流程有两种处理方式:并行串行。...假设上面三个子系统处理耗时均为:50ms,且不考虑网络延迟,系统卡顿等因素,则总的处理时间为: 串行:50ms + 50ms + 50 ms = 150ms 并行:50ms + 50ms = 100ms 使用消息队列结果将如何呢...总结 一般业务系统要引入 MQ,最早大家都是用 ActiveMQ,但是现在大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,不推荐使用

80420

消息队列 ActiveMQ 、RocketMQ 、RabbitMQ Kafka 如何选择?

它是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能削峰降低系统耦合性。...,避免某一刻流量过导致应用系统挂掉的情况; 目前使用较多的消息队列ActiveMQ 、RocketMQ 、RabbitMQ Kafka 等。...发布/订阅模式特点: 每个消息可以有多个订阅者; 发布者订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。...为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行; 异步处理 具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件注册短信。 对于该流程有两种处理方式:并行串行。...假设上面三个子系统处理耗时均为:50ms,且不考虑网络延迟,系统卡顿等因素,则总的处理时间为: 串行:50ms + 50ms + 50 ms = 150ms 并行:50ms + 50ms = 100ms 使用消息队列结果将如何

59810

ActiveMQ使用入门

根据不同的连接类型,连接允许用户创建会话,以发送接 收队列主题到目标。...(9)Destination:消息的目的地 目标是一个包装了消息目标标识符的【被管对象】,消息目标是指消息发布接收的地 点,或者是队列,或者是主题。...JMS管理员创建这些对象,然后用户通过jndi发现它们。...”:  (4)为ActiveMQ添加使用者账号 ActiveMQ默认使用是不需要账号密码的,在实际使用中当然不合适,我们可以修改 ~\conf\activemq.xml 文件,添加简单的验证账号。...中配置 activemq 连接 (3)在Spring配置类中创建Destination(消息目的地)——Queue(队列)  (4)使用“JmsMessagingTemplate”实现消息生产者

1.8K50

航空App的订餐系统(上):完整设计一个高级应用-第三篇

第一种解决方案的不同之处在于,作业将使用基于队列条目触发器的MDB异步发生。 ? 第二种解决方案是这种情况的最佳解决方案。...飞行对象将被放置到A-MQ队列上,并使用Camel路由拾取对象,按膳食类型(CBR)路由,转换为XML、根据需要组合记录,并将记录发送到适当的目的地。...它由以下部分组成: Broker:管理,接收发送消息。 多种语言的API实现:允许Java,C,C ++,RubyPerl开发人员访问ActiveMQ。 连接工厂。...此特定类型保证创建的连接是ActiveMQ,这允许在代理上设置其他参数或控件。 或者,使用ActiveMQConnectionFactory的设置属性激活A-MQ代理增强功能。 ?...目的地。 目标是由客户端基于每个会话创建的。 它们是发送消息的队列主题的客户端表示。 消息代理也维护自己的目标表示。 目的地以两种方式获得: 从会话中获得。

1.3K20

JMS与ActiveMQ

被管理的对象: 由管理员创建给客户端使用的预配置JMS对象。 现在有一些可用的JMS提供者像Apache ActiveMQopenMQ. 我这里使用的是Apache ActiveMQ....在Windows上安装启动Apache ActiveMQ 下载ActiveMQ windows二进制包。 将它解压到一个指定的目录。...JMS消息模型 JMS有两种消息模型, 分别是点对点消息模型发布订阅模型. 点对点模型 生产者将消息发送到JMS提供者指定的队列里,同时有且仅有一个监听此队列的消费者可以收到消息。 ?...点对点模型示例 例子1例子2基本上是类似的,唯一的区别是例子1是通过程序来创建队列而例子2是使用 jndi.properties文件以命名目录的方式来创建队列. 例子1 ? ? ? ? ? ?...例子2 jndi.properties ? ? ? ? 发布订阅模型 生产者将消息发送到JMS提供者指定的主题中,然后所有订阅了此主题的订阅者都将收到此主题的消息.

75250

企业级消息代理JMSAMQP

在异步消息中有两个极其重要的概念,即消息代理目的地。当消息发送者发送消息后,消息将由消息代理管理,消息代理保证消息传递到目的地。   异步消息的目的地主要有两种形式,即队列主题。...管理员在JNDI名字空间中配置连接工厂,这样,JMS客户才能够查找到它们。根据目的地的不同,用户将使用队列连接工厂,或者主题连接工厂。...根据不同的连接类型,连接允许用户创建会话,以发送接收队列主题目的地。...3、Destination接口(目的地) 目的地是一个包装了消息目的地标识符的被管对象,消息目的地是指消息发布接收的地点,或者是队列,或者是主题。...JMS管理员创建这些对象,然后用户通过JNDI发现它们。连接工厂一样,管理员可以创建两种类型的目的地,点对点模型的队列,以及发布者/订阅者模型的主题

81120

flea-msg使用之JMS初识

目的地 管理对象用于引用 Broker上的物理目的地。它们封装了特定于提供者的命名(地址语法)约定,并指定了使用目的地的消息传递域:队列(Queue) 或 主题(Topic)。...如下图显示了消息生产者消息消费者如何使用目的地管理对象访问其对应的物理目的地。标记的步骤表示管理员客户端应用程序使用此机制发送接收消息所需采取的操作。 图片 步骤1....消息生产者使用 JNDI 查找目的地管理对象。 步骤4. 消息生产者向目的地发送消息。 步骤5. 消息消费者查找其希望获取消息的目的地管理对象。 步骤6. 消息消费者从目的地获取消息。 2....如何管理 Broker 客户端运行时之间的控制流有效负载消息。 应如何处理队列浏览(仅限Java客户端)。 是否应重写某些消息头字段。 可以从启动客户端应用程序的命令行来覆盖连接工厂属性。...Java C 客户端的线程实现略有不同, 还可以使用会话对象执行以下操作: 为那些不使用管理对象定义目的地的客户端创建和配置目的地。 创建和配置临时主题队列;这些被用作请求-应答模式的一部分。

10821

队列 | 如何使用数组链表来实现“队列

如何使用数组链表来实现“队列” 与栈一样,队列(Queue)也是一种数据结构,它包含一系列元素。但是,队列访问元素的顺序不是后进先出(LIFO),而是先进先出(FIFO)。 ? ?...实现一个队列的数据结构,使其具有入队列、出队列、查看队列首尾元素、查看队列大小等功能。与实现栈的方法类似,队列的实现也有两种方法,分别为采用数组来实现采用链表来实现。下面分别详细介绍这两种方法。...OK,自此,使用数组实现队列已经搞定。 问题 出队列后数组前半部分的空间不能够充分地利用,解决这个问题的方法为把数组看成一个环状的空间(循环队列)。...在上图中,刚开始队列中只有元素1、23,当新元素4要进队列的时候,只需要上图中(1)(2)两步,就可以把新结点连接到链表的尾部,同时修改pEnd指针指向新增加的结点。...OK,使用链表实现队列到此就搞定。 总结 显然用链表来实现队列有更好的灵活性,与数组的实现方法相比,它多了用来存储结点关系的指针空间。

1.6K20

Docker学习之搭建ActiveMQ消息服务

每个消息只有一个消费者(Consumer),即一旦被消费,消息就不再在消息队列中 发送者接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列...接收者在成功接收消息之后需向队列应答成功 Pub/Sub 发布/订阅模式 包含三个角色:主题(Topic),发布者(Publisher),订阅者(Subscriber) 。...每个消息可以有多个消费者 发布者订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。 为了消费消息,订阅者必须保持运行的状态。...对于消息生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的Destination也是某个队列主题(即消息来源)。...-- 添加访问ActiveMQ的账号密码 --> <authenticationUser

2.1K31

微服务架构之Spring Boot(五十五)

将 org.apache.activemq:artemis-jms-server 添加到您的应用程序可让您使用嵌入模式。 Artemis配置由 spring.artemis.* 中的外部配置属性控制。...这些可以指定为逗号分隔列表以使用默认选项创建它们,或者您可以分别为 高级队列主题配置定义 org.apache.activemq.artemis.jms.server.config.JMSQueueConfiguration...JNDI查找,并使用Artemis配置中的 name 属性或通过配置提供的名称来解析目标名称。...33.1.3使用JNDI ConnectionFactory 如果您在应用程序服务器中运行应用程序,Spring Boot会尝试使用JNDI找到JMS ConnectionFactory 。...如果需要指定备用位置,可以使用 spring.jms.jndi-name 属性,如以下示例所示: spring.jms.jndi-name=java:/MyConnectionFactory 33.1.4

92920

Docker学习之搭建ActiveMQ消息服务

每个消息只有一个消费者(Consumer),即一旦被消费,消息就不再在消息队列中 发送者接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列...接收者在成功接收消息之后需向队列应答成功 Pub/Sub 发布/订阅模式 包含三个角色:主题(Topic),发布者(Publisher),订阅者(Subscriber) 。...每个消息可以有多个消费者 发布者订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。 为了消费消息,订阅者必须保持运行的状态。...对于消息生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的Destination也是某个队列主题(即消息来源)。...-- 添加访问ActiveMQ的账号密码 --> <authenticationUser

1.1K20
领券