Java 我应该在bean定义中为ActiveMQTopic属性设置什么?

Java 我应该在bean定义中为ActiveMQTopic属性设置什么?,java,spring,jms,activemq,Java,Spring,Jms,Activemq,我正在使用ActiveMQ作为我的JMS代理。我有以下类作为我的邮件发件人: public class MyMessageSender { private JmsTemplate jmsTemplate; private Topic topic; public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } public v

我正在使用ActiveMQ作为我的JMS代理。我有以下类作为我的邮件发件人:

public class MyMessageSender {
    private JmsTemplate jmsTemplate;
    private Topic topic;

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public void setTopic(Topic topic) {
        this.topic = topic;
    }
}
在我的SpringBean配置文件中,我有:

<bean id="customerMessage" class="com.example.MyMessageSender">
    <property name="jmsTemplate" ref="jsmTemplateBean" />
    <property name="topic" ref="topicBean" />
</bean>

<bean id="jsmTemplateBean" class="org.springframework.jms.core.JmsTemplate">
    <constructor-arg ref="connectionFactoryBean" />
</bean>

<bean id="topicBean" class="org.apache.activemq.command.ActiveMQTopic">
    <constructor-arg value="**What to put here as the constructor arg?**" />
</bean>


我查了一下的javadoc。有一个构造函数,其参数为
字符串
。那么我应该在
org.apache.activemq.command.ActiveMQTopic
的bean定义中添加什么呢?javadoc没有对该参数做任何说明。我想可能是主题名吧?但是如何在ActiveMQ中指定它呢

这实际上是主题名称。使用
ActiveMQ
无需显式设置或配置所需的
队列/主题。如果您尝试从任何队列或主题发布或订阅,它将动态地以静默方式创建。有时,人们将目的地放入
JNDI
,这样他们就可以被应用程序拉出,而不需要知道真实的
队列/主题
名称。这很好,如果需要,您可以将
ActiveMQQueue
ActiveMQTopic
对象添加到
JNDI
中,但这不是必需的

例如,如果您正在使用该配置:

<bean id="topicBean" class="org.apache.activemq.command.ActiveMQTopic">
    <constructor-arg value="my.topic" />
</bean>

订阅主题
my.topic
的每个应用程序都将接收以
topicBean
作为目标发送的消息。您不必在其他任何地方指定名称


这是关于这个问题的答案。

非常感谢。这非常简单,因为在发布/订阅队列/主题之前,我不需要创建目的地。但是我注意到我可以在
http://localhost:8161/admin/
预先创建主题/队列。它是否等同于在bean定义文件中设置主题名称?如果是这种情况,那么我不需要使用管理控制台来创建主题/队列,对吗?如果需要,您可以事先创建主题。如果您不这样做,它将在您第一次发布或订阅它时创建。