使用RabbitMQ侦听器类中的ApplicationEventPublisher触发事件

时间:2017-09-12 18:42:23

标签: java spring-rabbit

在webapp(Java 8,Spring 4)中,我有一个Rabbit监听器类,我需要在处理程序方法完成执行时触发事件。

当我将此代码放入侦听器类时,会抛出NullPointerException,但是如果我将它放在@Controller或在“main”线程中运行的@Service,一切正常。我相信它与上下文或类似的东西有关。

public class MyListener {

    @Autowired
    private ApplicationEventPublisher publisher;
    ...

    private void sendNotification() {
        ...
        publisher.publishEvent(notificationEvent);
    }
}

“publisher”对象不为null且“notificationEvent”不为null,(这不是基本错误)。

我正在调试spring-context.jar源代码,异常被抛出一个名为“Method”的反射类,

// java.lang.reflect.Method, line 483
return ma.invoke(obj, args);

正如我所说的,如果我把这段代码放在“主线程”中运行的Controller或Service中,一切都还可以,但是当我把它放在Rabbit类Listener中时,我得到了这个错误。

<bean id="myListener" class="com.example.MyListener />

<rabbit:listener-container connection-factory="connectionFactory" error-handler="queueErrorHandler" >
    <rabbit:listener ref="myListener" method="handleMethod" queue-names="myQueue" />        
</rabbit:listener-container>

我认为这与执行上下文有关,但我不知道可能是什么

0 个答案:

没有答案