заголовок верблюда с номером сообщения - PullRequest
0 голосов
/ 18 декабря 2018

С Apache Camel я хочу отправлять на rabbitmq сообщения об обмене с различными ключами маршрутизации для балансировки нагрузки (теперь у меня есть обмен с 4 ключами маршрутизации, больше в будущем).Есть ли простой способ добавить различные заголовки (ключи маршрутизации .setHeader ("rabbitmq.ROUTING_KEY", envelope.getRoutingKey ());) к сообщениям?

ОБНОВЛЕНО:

Я решил проблему с процессорами и $ {id}:

.setHeader("id", simple("${id}"))
.process(new Processor() {
    public void process(Exchange exchange) throws Exception {
    String id = exchange.getIn().getHeader("id").toString();
    String newRoutingKey = ROUTING_KEY_PREFIX +
            (Integer.valueOf(id.split(":")[MESSAGE_NUMBER_IND]) % ROUTING_KEYS_NUMBER);
    exchange.getIn().removeHeader("id");
    exchange.getIn().setHeader("rabbitmq.ROUTING_KEY", newRoutingKey);
} }).to(rmqQueue)

Есть ли скрытые проблемы?

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать toD для динамической установки ключей маршрутизации на конечную точку RabbitMq.

Синтаксис XML:

<toD uri="rabbitmq://hostname[:port]/exchangeName?routingKey=**${header.routekey}**"/>

где заголовок.routekey - это динамический ключ, который вы намереваетесь использовать, и он установлен в заголовке.

В случае Java DSL синтаксис может выглядеть следующим образом:

.toD ("rabbitmq: // имя хоста [: порт] / exchangeName? routingKey = $ {header.routekey}");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...