我的MessageListener实现不是线程安全的。
当我尝试在具有多个使用者的DefaultMessageListenerContainer中连接它时,这会导致问题,因为所有使用者都共享相同的MessageListener对象。
有没有办法通过使DefaultMessageListener容器创建MessageListeners的多个实例来克服此问题,这样,MessageListener不会在使用者线程之间共享。
这样每个消费者线程都有自己的MessageListener实例。
请告知。
答案 0 :(得分:1)
没有内置任何东西来支持这一点。通常认为最佳做法是使服务成为无状态(因此是线程安全的)。
如果那不可能,你需要创建一个包装器监听器;两种简单的方法是将监听器的实例存储在ThreadLocal
中,或维护一个对象池,并在每条消息上从池中检索/返回实例。