Github user GJL commented on a diff in the pull request: https://github.com/apache/flink/pull/5410#discussion_r193127128 --- Diff: flink-connectors/flink-connector-rabbitmq/src/main/java/org/apache/flink/streaming/connectors/rabbitmq/RMQSink.java --- @@ -105,7 +153,18 @@ public void invoke(IN value) { try { byte[] msg = schema.serialize(value); - channel.basicPublish("", queueName, null, msg); + if (messageCompute == null) { + channel.basicPublish("", queueName, null, msg); + } else { + String rk = messageCompute.computeRoutingKey(value); + String exchange = messageCompute.computeExchange(value); + channel.basicPublish((exchange != null) ? exchange : "", + (rk != null) ? rk : "", + (returnListener != null) && messageCompute.computeMandatory(value), --- End diff -- I would prefer that an`IllegalStateException` is thrown if the user code returns `true` without a `returnListener`.
---