java 开发 —— 问题列表

唯有记录才能弥补中年人的记忆能力

碎碎念:

  • 本系列仅记录java开发中碰到的问题,仅供参考,实际用途并不大,仅供本人使用,莫对号入座

1. javax.jms.IllegalStateException: Illegal use of receive() from multiple threads

1. 1 问题代码示例:

public class JMSMessageListener implements MessageListener {
    public void work() {
        MessageConsumer consumer = session.createConsumer(destination);
        // 此处添加消息监听
        consumer.setMessageListener(this);
        Message msg = null;
        while (true) {
            // 此处接收消息
            msg = consumer.receive();
        }
    }

    public void onMessage(Message message) {
    // 此处消息监听处理
    }
}

1. 2 问题分析:由代码可知,既然已经添加了消息监听,那就没必要在接收阻塞式处理了,这是本人着急情况下产生的,但异常问题指向的是不能再多线程下使用receive方法,按问题代码写法再MessageListener实际上也创建自身的线程去实现receive的阻塞式获取,要确保消费端代理获取的唯一性,故有此判断抛出的错误,解决方法当然是2选一,还是推荐用MessageListener处理

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容