Передача аргумента в RecipientList, определенный в XML в Camel - PullRequest
0 голосов
/ 02 марта 2020

У меня есть следующий маршрут, определенный в XML:

<?xml version="1.0" encoding="UTF-8"?>
<routes id="camel" xmlns="http://camel.apache.org/schema/spring"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring-3.0.1.xsd">

    <route>
        <from uri="activemq:queue?brokerURL=tcp://127.0.0.1:30001" />
        <bean beanType="com.mycompany.MyProcessor" />
        <setProperty name="brokerURL">
            <constant>tcp://127.0.0.1:30001</constant>
        </setProperty>
        <recipientList>
            <method method="getRecipients" beanType="com.mycompany.MyRecipientListProvider" />
        </recipientList>
    </route>
</routes>

Тогда я могу использовать brokerURL в MyRecipientListProvider класс с использованием @ ExchangeProperty инъекция. Есть ли лучший способ передать аргумент в RecipientList, определенный в XML?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Вы можете попробовать вот так:

 public String[] getRecipients(@Simple("${exchangeProperty.brokerURL}") String brokerURL){
    //processing data
}
0 голосов
/ 03 марта 2020

Привет и добро пожаловать в StackOverflow

  • Если информация, которую вы хотите передать, (или может быть) индивидуально для каждого сообщения , вы можете использовать exchange свойства или сообщение заголовки
  • Разница между ними заключается в том, что свойства обмена существуют только во время обработки текущего маршрута , поскольку они находятся в оболочке обмена сообщения. Когда сообщение отправляется (например, .to(...)), свойства больше не доступны
  • Заголовки сообщений на другой стороне (вводимые с помощью @Headers) находятся внутри сообщения. и, следовательно, по возможности применяется к исходящим сообщениям и, следовательно, передается как часть сообщения .
  • Если информация stati c (из точки приложения view), поэтому оно остается одинаковым для всех сообщений, вы можете использовать стандартные свойства приложения , внедренные вашей прикладной средой в класс, где вам это нужно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...