Fix the decorator's listner, it should create a new instance for each message instead of use one function closure