Spring integration redisQueueInboundGateway.setReplyChannelName的用途是什么

Spring integration redisQueueInboundGateway.setReplyChannelName的用途是什么,spring-integration,Spring Integration,只想问一下redisQueueInboundGateway.setReplyChannelName用于什么 我得到了一个日志B和一个日志 1.我的问题是,当我将日志C设置为RedisQueueInboundGateway时,它将在什么情况下打印 “中的文档”https://docs.spring.io/spring-integration/reference/html/redis.html#redis-“队列入站网关”的类名和类解释似乎不正确,例如: 2.1“RedisPublishingMes

只想问一下redisQueueInboundGateway.setReplyChannelName用于什么

我得到了一个日志B和一个日志

1.我的问题是,当我将日志C设置为RedisQueueInboundGateway时,它将在什么情况下打印

  • “中的文档”https://docs.spring.io/spring-integration/reference/html/redis.html#redis-“队列入站网关”的类名和类解释似乎不正确,例如:
  • 2.1“RedisPublishingMessageHandler”中命名了“RedisOutboundChannelAdapter”

    2.2“RedisQueueOutboundChannelAdapter”在“RedisQueueMessageDrivenEndpoint”中命名

    2.3 Redis Queue Outbound Gateway的说明正是Redis Queue Inbound Gateway的副本

        @GetMapping("test")
        public void test() {
            this.teller.test("testing 1");
    
      @Gateway(requestChannel = "inputA")
        void test(String transaction);
    
      @Bean("A")
        PublishSubscribeChannel getA() {
            return new PublishSubscribeChannel();
        }
    
        @Bean("B")
        PublishSubscribeChannel getB() {
            return new PublishSubscribeChannel();
        }
    
        @Bean("C")
        PublishSubscribeChannel getC() {
            return new PublishSubscribeChannel();
        }
    
        @ServiceActivator(inputChannel = "A")
        void aTesting(Message message) {
            System.out.println("A");
    
            System.out.println(message);
        }
    
        @ServiceActivator(inputChannel = "B")
        String bTesting(Message message) {
            System.out.println("B");
            System.out.println(message);
            return message.getPayload() + "Basdfasdfasdfadsfasdf";
        }
    
        @ServiceActivator(inputChannel = "C")
        void cTesting(Message message) {
            System.out.println("C");
            System.out.println(message);
        }
    
    
        @ServiceActivator(inputChannel = "inputA")
        @Bean
        RedisQueueOutboundGateway getRedisQueueOutboundGateway(RedisConnectionFactory connectionFactory) {
            val redisQueueOutboundGateway = new RedisQueueOutboundGateway(Teller.CHANNEL_CREATE_INVOICE, connectionFactory);
            redisQueueOutboundGateway.setReceiveTimeout(5);
            redisQueueOutboundGateway.setOutputChannelName("A");
            redisQueueOutboundGateway.setSerializer(new GenericJackson2JsonRedisSerializer(new ObjectMapper()));
    
            return redisQueueOutboundGateway;
        }
    
        @Bean
        RedisQueueInboundGateway getRedisQueueInboundGateway(RedisConnectionFactory connectionFactory) {
            val redisQueueInboundGateway = new RedisQueueInboundGateway(Teller.CHANNEL_CREATE_INVOICE, connectionFactory);
            redisQueueInboundGateway.setReceiveTimeout(5);
            redisQueueInboundGateway.setRequestChannelName("B");
            redisQueueInboundGateway.setReplyChannelName("C");
            redisQueueInboundGateway.setSerializer(new GenericJackson2JsonRedisSerializer(new ObjectMapper()));
    
            return redisQueueInboundGateway;
        }
    
    

    你的担心还不清楚

    2.1

    有一个组件(模式名),后台有一个类覆盖逻辑。 有时它们是不一样的

    因此,
    Redis出站通道适配器
    RedisPublishingMessageHandler
    覆盖,这仅仅是因为有一个
    ConsumerdPointFactoryBean
    来消费来自输入通道的消息,并有
    RedisPublishingMessageHandler
    来处理它们。换句话说,该框架创建了两个bean,以使这样的Redis交互工作。事实上,所有出站通道适配器(网关)的处理方式都是相同的:端点加处理程序。它们一起被称为
    适配器
    网关
    ,具体取决于交互的类型

    2.2

    我在文件中没有看到这样的误导

    2.3

    那不是真的。 见区别:

    SpringIntegration引入了Redis队列出站网关来执行请求和应答场景。它将会话UUID推送到提供的队列

    SpringIntegration4.1引入了Redis队列入站网关来执行请求和应答场景。它从提供的队列中弹出一个会话UUID

    所有入站网关都提供了一个可选的
    replyChannel
    ,用于跟踪回复。它不是这种类型的网关要发送东西的地方。它完全相反:这个入站网关将通过一个回复通道将回复消息发送回Redis。入站网关由外部启动。在我们的例子中,作为配置的Redis列表中的请求消息。当集成流执行其工作时,它会向该网关发送一条回复消息。在大多数情况下,它是使用消息中的
    replyChannel
    头自动完成的。但是,如果要跟踪该回复,可以在入站网关上添加一个
    PublishSubscribeChannel
    作为
    replyChannel
    选项,并且service activator和网关都会收到相同的消息

    replyChannel
    选项背后的行为在消息网关一章中进行了说明:

    您可能在文档中对该部分的理解是正确的,而那些
    requestChannel
    replyChannel
    实际上是出站网关部分文本的副本。这必须得到解决。请随意提出GH问题,这样我们就不会忘记解决它


    当您将消息发送到
    C
    频道时,将打印C日志,但同样:如果您想使Redis入站网关的回复关联工作,它必须作为
    PublishSubscribeChannel
    。否则,只需忽略它,您的
    字符串b测试(消息消息){
    将其结果发送到
    回复频道
    标题。

    您的问题不清楚

    2.1

    有一个组件(模式名),后台有一个类覆盖逻辑。 有时它们是不一样的

    因此,
    Redis Outbound Channel Adapter
    RedisPublishingMessageHandler
    覆盖,这仅仅是因为有一个
    ConsumerdPointFactoryBean
    来消费来自输入通道的消息,并有
    RedisPublishingMessageHandler
    来处理它们。换句话说,框架创建两个bean来生成这样一个Red交互工作正常。事实上,所有出站通道适配器(网关)的处理方式都是相同的:端点加处理程序。根据交互的类型,它们一起被称为
    adapter
    gateway

    2.2

    我在文件中没有看到这样的误导

    2.3

    那不是真的。 见区别:

    Spring Integration引入了Redis队列出站网关来执行请求和应答场景。它将会话UUID推送到提供的队列

    SpringIntegration4.1引入了Redis队列入站网关来执行请求和应答场景。它从提供的队列中弹出一个会话UUID

    所有入站网关都提供了一个可选的
    replyChannel
    来跟踪回复。这不是此类网关将要发送内容的位置。它完全相反:此入站网关将使用回复通道将回复消息发送回Redis。入站网关是从外部启动的。在我们的例子中,作为配置的Redis列表中的请求消息。当Integration flow执行其工作时,它会向该网关发送一条回复消息。在大多数情况下,它是使用消息中的
    replyChannel
    头自动完成的。但是如果您想跟踪该回复,可以添加
    PublishSubscribeChannel
    ,作为
    入站网关上的replyChannel
    选项,您的service activator和网关都会收到相同的消息

    replyChannel
    选项背后的行为在消息网关一章中进行了说明:

    您可能在文档中对这一部分的看法是正确的,而那些
    requestChannel
    replyChannel
    实际上是出站网关部分文本的副本。这一点必须得到解决。请随时提出GH问题,这样我们就不会忘记解决它

    <