title: Spring Cloud Stream > SendTo does not send to Kafka but directly via direct channel
body: <p>I have two channels in my application which hare bound to two Kafka topics:</p>
  
  <ol>
  <li>input</li>
  <li>error.input.my-group</li>
  </ol>
  
  <p>Input is configured in order to send message to dlq (error.input.my-group) in case of error.</p>
  
  <p>I have a StreamListener on "error.input.my-group" which is configured in order to send the message back to original channel.</p>
  
  <pre><code>@StreamListener(Channels.DLQ)
  @SendTo(Channels.INPUT)
  public Message&lt;?&gt; reRoute(Message&lt;?&gt; failed){
      messageDeliveryService.waitUntilCanBeDelivered(failed);
      processed.incrementAndGet();
      Integer retries = failed.getHeaders().get(X_RETRIES_HEADER, Integer.class);
      retries = retries == null ? 1 : retries+1;
       if (retries &lt; MAX_RETRIES) {
          logger.info("Retry (count={}) for {}", retries, failed);
          return buildRetryMessage(failed, retries);
      }
      else {
          logger.error("Retries exhausted (-&gt; sent to parking lot) for {}", failed);
          Channels.parkingLot().send(MessageBuilder.fromMessage(failed)
                  .setHeader(BinderHeaders.PARTITION_OVERRIDE,
                          failed.getHeaders().get(KafkaHeaders.RECEIVED_PARTITION_ID))
                  .build());
      }
      return null;
  }
  
  private Message&lt;?&gt; buildRetryMessage(Message&lt;?&gt; failed, int retries) {
      return MessageBuilder.fromMessage(failed)
              .setHeader(X_RETRIES_HEADER, retries)
              .setHeader(BinderHeaders.PARTITION_OVERRIDE,
                      failed.getHeaders().get(KafkaHeaders.RECEIVED_PARTITION_ID))
              .build();
  }
  </code></pre>
  
  <p>Here is my Channels class</p>
  
  <pre><code>        @Component
      public interface Channels {
  
          String INPUT = "INPUT";
          //Default name use by SCS (error.&lt;input-topic-name&gt;.&lt;group-name&gt;)
          String DLQ = "error.input.my-group";
          String PARKING_LOT = "parkingLot.input.my-group";
  
          @Input(INPUT)
          SubscribableChannel input();
  
          @Input(DLQ)
          SubscribableChannel dlq();
  
          @Output(PARKING_LOT)
          MessageChannel parkingLot();
  
  
  }
  </code></pre>
  
  <p>Here is my configuration </p>
  
  <pre><code>spring:
    cloud:
      stream:
        default:
          group: my-group
        binder:
          headerMode: headers      kafka:
          binder:
            # Necessary in order to commit the message to all the Kafka brokers handling the partition -&gt; maximum durability
            # -1 = all
            requiredAcks: -1
            brokers: bootstrap.kafka.svc.cluster.local:9092,bootstrap.kafka.svc.cluster.local:9093,bootstrap.kafka.svc.cluster.local:9094,bootstrap.kafka.svc.cluster.local:9095,bootstrap.kafka.svc.cluster.local:9096,bootstrap.kafka.svc.cluster.local:9097
          bindings:
            input:
              consumer:
                partitioned: true
                enableDlq: true
                dlqProducerProperties:
                  configuration:
                    key.serializer: "org.apache.kafka.common.serialization.ByteArraySerializer"
            "[error.input.my-group]":
              consumer:
                # We cannot loose any message and we don't have any DLQ for the DLQ, therefore we only commit in case of success
                autoCommitOnError: false
                ackEachRecord: true
                partitioned: true
                enableDlq: false
        bindings:
          input:
            contentType: application/xml
            destination: input
          "[error.input.my-group]":
            contentType: application/xml
            destination: error.input.my-group
          "[parkingLot.input.my-group]":
            contentType: application/xml
            destination: parkingLot.input.my-group
  </code></pre>
  
  <p>Problem is my messages are never pushed again to Kafka but directly delivered to my input channel. Is there something I misunderstood?</p>