【问题标题】:Getting Compile time error while implementing MessageCreator in ActiveMq在 ActiveMq 中实现 MessageCreator 时出现编译时错误
【发布时间】:2018-01-08 16:56:50
【问题描述】:
我正在尝试进入 ActiveMq 并按照以下链接上的教程进行操作:
Spring-ActiveMq Example
在创建 ActiveMQMessageProducer 类时,我收到以下行的编译时错误:
textMessage.setIntProperty(MSG_COUNT, messageCount);
错误是
"不能引用中定义的非final局部变量messageCount
封闭范围"
我没有得到的是它是如何按照教程工作的。
谢谢
【问题讨论】:
标签:
spring
jms
activemq
producer-consumer
【解决方案1】:
本教程中有一个错误,因为内部匿名类的方法不能引用非最终变量。这是一个固定版本:
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;
}
});
}
}