代码之家  ›  专栏  ›  技术社区  ›  Nikem

如何在PublishSubscribeBchannel中测试交付?

  •  0
  • Nikem  · 技术社区  · 6 年前

    我有一个 PublishSubscribeChannel MessageHandlers 在同一个JVM中。处理程序使用 @StreamListener 注解。频道使用 Executors 所以传递是异步的。

    Message 身体)。我有两种方法来测试:

    1. 查找给定频道的所有订户并验证其
    2. 向通道发送消息并验证没有处理程序引发异常。

    我不知道该怎么做。我想我可以通过听 errorChannel (应该没有消息),但我不太明白应该等待多长时间才能收到错误消息。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gary Russell    6 年前

    对于1,可以使用反射来查看通道分派器中处理程序的集合;然后再次使用反射来查看处理程序的 Method

    但是,您的设计是有缺陷的,除非您不介意丢失消息;只要您将消息交给执行器,传入的消息就会被确认;如果服务器崩溃,消息就会丢失。

    如果去掉executor,那么向通道中添加一个拦截器会更简单,它将在 afterSendCompletion()