JMS Query:如何与Queue一起定义主题?

时间:2013-02-12 04:38:23

标签: jms spring-jms jms-topic

我们已经在http://activemq.apache.org/jms-and-jdbc-operations-in-one-transaction.html中为队列

指定的jms-context.xml中定义了inboundConnector

我为主题定义了一个新的inboundTopicConnector,当我为主题发送消息时,它会给出以下错误java.lang.UnsupportedOperationException:必须指定目标。

你能帮我解决一下这个问题吗?

在jms-context.xml中

bean id="inboundConnector" ....
property name="destinationType" value="javax.jms.Queue"

bean id="inboundTopicConnector" ...
property name="destination" value="${jms.topic}"
property name="destinationType" value="javax.jms.Topic"

在jms-context-without-inbound-listeners.xml

bean id="sendTo" ...
bean id="topic" class="org.apache.activemq.command.ActiveMQTopic"
property name="physicalName" value="${jms.topic}"

在java文件中

@Autowired
  @Qualifier("topic")
  private Destination destination;
          getJMSTemplate().setPubSubDomain(true);
          getJMSTemplate().send(this.destination, new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
              return session.createTextMessage("Hello...." + destination);
            }
          });

谢谢, 卡锡尔

1 个答案:

答案 0 :(得分:1)

每当postinq这样的问题时,你必须包括堆栈跟踪 - 以及更完整的配置(例如bean“topic”)。

最佳猜测是未启用自动装配 - 因此目标字段为null。您可以在调试器中验证这一点。

您是否已加入<context:annotation-config/>?这可以实现自动装配。