在ActiveMq中实现MessageCreator时出现编译时错误

时间:2018-01-01 14:35:50

标签: spring jms activemq producer-consumer

我正在尝试进入ActiveMq并按照以下链接中的教程进行操作:

Spring-ActiveMq Example

创建ActiveMQMessageProducer类时,我收到以下行的编译时错误:

textMessage.setIntProperty(MSG_COUNT, messageCount);

错误是

  

“不能引用中定义的非最终局部变量messageCount   封闭范围“

我没有得到的是它是如何根据教程工作的。

由于

1 个答案:

答案 0 :(得分:1)

本教程中存在一个错误,因为内部匿名类的方法不能引用非final变量。这是一个固定版本:

   public void generateMessages() throws JMSException 
{
    for (int messageCount = 0; messageCount < 10; messageCount++) 
    {
        final String text = "TP Message " + messageCount;
        final int count = messageCount; // copy the value into a final
        jmsTemplate.send(new MessageCreator() 
        {
            public Message createMessage(Session session) throws JMSException
            {
                TextMessage textMessage = session.createTextMessage(text);
                textMessage.setIntProperty(MSG_COUNT, count); // use it             
                return textMessage;
            }
        });
    }
}