java - 尝试将消息推送到 Activemq 时出现 NamingException

标签 java jms activemq jndi messaging

我尝试向 activemq 发布消息。但是我在 java 应用程序中遇到一个命名异常。这是代码如下

 Properties props = new Properties();
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
    props.setProperty(Context.PROVIDER_URL,"tcp://localhost:61616");
    InitialContext ctx = new InitialContext(props);
     // get the initial context
     // InitialContext ctx = new InitialContext();
     QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");        
     // create a queue connection
       QueueConnection queueConn = connFactory.createQueueConnection();                                                       
       // lookup the queue object
       Queue queue = (Queue) ctx.lookup("nixon");

我收到三个警告以及以下一个这样的错误

 Exception in thread "main" javax.naming.NameNotFoundException: nixon
at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:235)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.youtube.rest2.status.ProducerNewClient.main(ProducerNewClient.java:38)

谁能告诉我为什么会出现这个错误..?

最佳答案

您很可能会收到此错误,因为您尚未在 JNDI 配置文件中配置目标。您可以将这些定义添加到您的文件中,也可以使用 ActiveMQ 的动态目标功能。

为了使用基于 JNDI 的程序进行最简单的配置,有如下 2 个动态上下文

dynamicQueues
dynamicTopics

它允许您使用 JNDI 查找队列和主题,无需任何配置。

例如如果您使用以下名称来查找 JNDI 动态队列/FOO.BAR

您将得到一个名为“FOO.BAR”的 ActiveMQQueue。

阅读JNDI Documentation请访问 ActiveMQ 站点了解更多信息。

关于java - 尝试将消息推送到 Activemq 时出现 NamingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19815699/

相关文章:

jakarta-ee - ActiveMQ 抛出 NullPointerException

java - 如何通过以编程方式设置用户名和密码来连接到 ActiveMQ 服务器?

java - 我的 TextView 不支持这个 (') 字符

java - 在连接之前检查数字是否已经在字段中?

java - 简单的主动 mq java 发送到由 stomp javascript 创建的主题

java - 单个 java 进程的排队/工作线程架构

authorization - activemq 用户无权创建 : topic://ActiveMQ. Advisory.Connection

java - 在 Athena 中重命名分区列名称

java - 无法将 double 型格式化为在小数点分隔符后打印 2 位数字

java - JMS 消息计数器