java - 我应该为 bean 定义中的 ActiveMQTopic 属性设置什么?

标签 java spring jms activemq

我正在使用 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;
    }
}

在我的 Spring bean 配置文件中,我有:

<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>

我查了 ActiveMQTopic 的 javadoc .有一个以 String 作为参数的构造函数。那么我应该在 org.apache.activemq.command.ActiveMQTopic 的 bean 定义中放些什么呢? javadoc 没有说明该参数。我想也许是主题名称?但是我如何在 ActiveMQ 中指定它呢?

最佳答案

这实际上是主题名称。使用 ActiveMQ,您无需显式设置或配置您需要的 queues/topics。如果您尝试从任何队列或主题发布或订阅,它将在运行时静默创建。有时人们将目的地放入 JNDI 以便他们的应用程序可以将它们拉出而无需知道真实的物理 queue/topic 名称。这很好,如果需要,您可以将 ActiveMQQueueActiveMQTopic 对象添加到 JNDI 中,但这不是必需的。

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

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

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

这是 documentation关于这个问题。

关于java - 我应该为 bean 定义中的 ActiveMQTopic 属性设置什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19796473/

相关文章:

java - jax-rs 在 ContainerRequestFilter 和 ReaderInterceptor 之间共享信息

java - 如果 jvm 支持 -d64 选项,如何从 java 代码进行测试?

java - 解析具有不同键的 JSON 对象

java - spring集成模式 validator 的使用?

java - 继承变量上的@ConfigurationProperties

amazon-web-services - 让 SQS 死信队列与 Spring Boot 和 JMS 一起使用

java - Minecraft Forge mod 版本 1.7.10 在添加新配方后不断崩溃

java - 带有 @JsonProperty defaultValue 处理的 Jackson 模块

java - spring中如何过滤jms消息

java - 如何通过 Websphere MQ API 检索 JMS 生产者设置的属性?