【问题标题】:Topic and queue with the same name, classcastexception同名主题和队列,classcastexception
【发布时间】:2016-02-02 08:49:28
【问题描述】:

我的问题是,使用 ActiveMQ 我们可以为 jndi 设置同名的主题和队列吗?

我都使用相同的名称进行了定义,当我尝试使用查找创建队列时,我收到了这个异常。

  java.lang.ClassCastException: org.apache.activemq.command.ActiveMQTopic cannot be cast to javax.jms.Queue

【问题讨论】:

  • 如果您共享一个名称,您认为 JNDI 会如何为您挑选合适的对象?它们不兼容。
  • 因为一个地址是用来创建Queue的,同一个地址是用来创建Topic的。例如,Tibco 允许重用相同的地址,但 ActiveMQ 似乎不允许。但只想100%确定
  • 请提出一个问题,如果有问题可以编辑问题,请删除重复问题

标签: apache jms activemq


【解决方案1】:

虽然您实际上可以拥有同名的主题和队列,但您不能在主题和队列之间共享 JNDI 名称。 JNDI 名称使您可以查找单个对象(队列或主题)。

所以 - 确保您有具有唯一名称的 JNDI 条目。

queue.MyQueue = samePhysicalName
topic.MyTopic = samePhysicalName

虽然我认为共享姓名是不好的做法,因为它更难记录、排除故障等。

【讨论】:

  • 我的问题是,在一个环境中,我们有使用 jndi 的 tibco 使用两个不同的文件。一个用于队列,另一个用于主题。因此,可以创建具有相同名称的主题或队列,因为如果您想要一个主题和队列文件,如果您想要一个队列,他正在搜索主题文件。但是 activeMQ 在我有主题和队列地址的地方使用相同的 jndi.properties
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2012-12-15
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多