Java 对于泛化发布-订阅模式以允许在同一消息通道上使用多种类型,什么是一个好的模式?

Java 对于泛化发布-订阅模式以允许在同一消息通道上使用多种类型,什么是一个好的模式?,java,spring,design-patterns,observer-pattern,enterprise-integration,Java,Spring,Design Patterns,Observer Pattern,Enterprise Integration,我使用的是spring发布-订阅设置,即将事件发布到单个通道 不同的事件彼此之间有很大的不同,从类型中导出侦听器的行为将是混乱的 但是,我有足够的类型,我不适应大量不同的消息通道来处理不同的类型,所以如果可能的话,我想防止这种情况发生。看看Spring集成模式。您可以仅使用声明性逻辑来执行发布/订阅/频道模式 要求既不是队列哲学,也不是主题哲学……除了一些额外的识别受体逻辑之外,还有一些混合的东西……我试图给出一个基本的想法 Message -> this interface

我使用的是spring发布-订阅设置,即将事件发布到单个通道

不同的事件彼此之间有很大的不同,从类型中导出侦听器的行为将是混乱的


但是,我有足够的类型,我不适应大量不同的消息通道来处理不同的类型,所以如果可能的话,我想防止这种情况发生。

看看Spring集成模式。您可以仅使用声明性逻辑来执行发布/订阅/频道模式


要求既不是队列哲学,也不是主题哲学……除了一些额外的识别受体逻辑之外,还有一些混合的东西……我试图给出一个基本的想法

       Message -> this interface will have multiple subclasses for different types of messages
  interface Receptor {
        boolean isMessageDigestable(Message);
        void digestMessage(Message);
        void subscribe(Publisher);
  }

 different receptor will implement Receptor

 class Publisher {

      List<Receptor> receptors;

      void addReceptor(){//your code here};

      void produceMessage() {
          Message m = ....//message production
          for (Receptor r : receptors)
            {
               if (r.isDigestableMessage(m))
                     r.digestMessage(m);
            }
  }
Message->此接口将为不同类型的消息提供多个子类
界面受体{
布尔isMessageDigestable(消息);
无效消息(消息);
无效订阅(出版商);
}
不同的受体将执行不同的受体
类发布者{
列出受体;
void addReceptor(){//此处的代码};
void produceMessage(){
消息m=..//消息生成
for(受体r:受体)
{
if(r.isDigestableMessage(m))
r、 消息摘要(m);
}
}

也许我应该学习Akka:-PI已经实现了spring集成模式publish-subscribe,但是我想在没有越来越多通道的情况下扩展类型的数量。