|
27 | 27 | import java.util.stream.Collectors; |
28 | 28 |
|
29 | 29 | import io.aklivity.zilla.runtime.binding.asyncapi.config.AsyncapiSchemaConfig; |
| 30 | +import io.aklivity.zilla.runtime.binding.asyncapi.internal.view.AsyncapiMessageView; |
30 | 31 | import io.aklivity.zilla.runtime.binding.asyncapi.internal.view.AsyncapiOperationView; |
31 | 32 | import io.aklivity.zilla.runtime.binding.asyncapi.internal.view.AsyncapiReplyView; |
32 | 33 | import io.aklivity.zilla.runtime.binding.http.kafka.config.HttpKafkaConditionConfig; |
@@ -213,10 +214,12 @@ private final class HttpKafkaBindingsHelper extends BindingsHelper |
213 | 214 | private static final Pattern JSON_CONTENT_TYPE_PATTERN = Pattern.compile("^application/(?:.+\\+)?json$"); |
214 | 215 | private static final Pattern PARAMETER_PATTERN = Pattern.compile("\\{([^}]+)\\}"); |
215 | 216 | private static final Pattern CORRELATION_PATTERN = Pattern.compile(CORRELATION_ID); |
| 217 | + private static final Pattern CORRELATION_HEADERS_NAME = Pattern.compile("\\$message\\.header#\\/(.+)"); |
216 | 218 |
|
217 | 219 | private final Matcher parameters = PARAMETER_PATTERN.matcher(""); |
218 | 220 | private final Matcher correlation = CORRELATION_PATTERN.matcher(""); |
219 | 221 | private final Matcher jsonContentType = JSON_CONTENT_TYPE_PATTERN.matcher(""); |
| 222 | + private final Matcher correlationHeader = CORRELATION_HEADERS_NAME.matcher(""); |
220 | 223 |
|
221 | 224 |
|
222 | 225 | private final List<ProxyRouteHelper> httpKafkaRoutes; |
@@ -483,6 +486,16 @@ private <C> HttpKafkaWithProduceConfigBuilder<C> injectHttpKafkaRouteProduceWith |
483 | 486 | produce.replyTo(reply.channel.address); |
484 | 487 | } |
485 | 488 |
|
| 489 | + AsyncapiMessageView messageView = kafkaOperation.messages.get(0); |
| 490 | + if (messageView.correlationId != null && messageView.correlationId.location != null) |
| 491 | + { |
| 492 | + String correlationId = messageView.correlationId.location; |
| 493 | + if (correlationHeader.reset(correlationId).matches()) |
| 494 | + { |
| 495 | + produce.correlationId(correlation.group(1)); |
| 496 | + } |
| 497 | + } |
| 498 | + |
486 | 499 | return produce; |
487 | 500 | } |
488 | 501 |
|
|
0 commit comments