问答详情
源自:-

请问我照着敲的consumer为什么获取消息为null?万分感谢!

consumer消息接收为Null值

https://img.mukewang.com/5ad1725b0001cf5404970123.jpg

producer消息发送是成功的

https://img.mukewang.com/5ad1726c0001761d04620150.jpg

以下为consumer相关代码:

1.执行consumer入口:

AppConsumer {
    (String[] args) {
        ApplicationContext context = ClassPathXmlApplicationContext()}
}

2.consumer.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <!--导入公共配置-->
   <import resource="common.xml"/>

   <!--配置消息监听器-->
   <bean id="consumerMessageListener" class="com.lee.jms.consumer.ConsumerMessageListener"/>

   <!--配置消息监听容器,Spring提供的监听容器,管理容器去自动连接ConnectionFactory,指定具体的消息Destination和消息监听者-->
   <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
       <!--指定连接工厂,对应的是spring提供的SingleConnectionFactory-->
       <property name="connectionFactory" ref="connectionFactory"/>
       <!--指定目的地-->
       <property name="destination" ref="queueDestination"/>
       <!--指定消息监听器-->
       <property name="messageListener" ref="consumerMessageListener"/>
   </bean>
</beans>

3.公共配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

   <!--注解声明-->
   <context:annotation-config/>

   <!--基础配置 START-->
   <!--ActiveMQ为我们提供的ConnectionFactory-->
   <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
       <property name="brokerURL" value="tcp://localhost:61616"/>
   </bean>
   <!--spring jms为我们提供的连接池-->
   <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
       <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
   </bean>
   <!--一个队列的目的地,点对点的-->
   <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
       <!--该构造参数的值即该目的地队列的队列名-->
       <constructor-arg value="queue"/>
   </bean>
   <!--基础配置 END-->

</beans>

4.消息监听者

ConsumerMessageListener MessageListener {
    (Message message) {
        TextMessage textMessage = (TextMessage)message{
            System..println(+ textMessage.getText())} (JMSException e) {
            e.printStackTrace()}
    }
}


提问者:yuxiele 2018-04-14 11:25

个回答

  • yuxiele
    2018-04-17 08:14:26

    问题解决了,是因为在createMessage方法里面没有把值传过去