У меня есть компонент на основе Spring, который должен иметь возможность общаться через JMS и хотел бы использовать аннотированный метод @JmsListener
. Мой класс слушателя должен прочитать полезную нагрузку, кодированную JSON, но также должен прочитать некоторый пользовательский заголовок. Я создал bean-компонент @Configuration
и добавил его к текущей конфигурации на основе XML, в которой я настраиваю необходимый конвертер сообщений. В настоящее время мой метод слушатель помечается как это:Настройка имени назначения в Spring @JmsListener
@JmsListener(destination = "activemq:queue:queue.name")
public void handleItemCommand(ProvisionItemCommand itemCommand, @Header(AUTH_HEADER_NAME) String auth) {
Это все работает, но, очевидно, имя очереди не может быть жёстко, оно должно быть настраиваемым. Чтобы усложнить дело, мы используем какой-то пользовательский класс для чтения данных конфигурации, поэтому использование @PropertySource
и файла свойств не может быть и речи.
Где я продолжаю застревать, это увидеть, как настроить вещи, чтобы это произошло. В справочной документации Spring 4.2 мне сообщается о создании и регистрации пользовательского класса PropertySource
(который может быть подкреплен нашим настраиваемым кодом конфигурации), но пример в документе (http://docs.spring.io/spring/docs/4.1.9.RELEASE/spring-framework-reference/htmlsingle/#beans-property-source-abstraction) просто создает контекст приложения на лету и добавляет источник настраиваемого свойства к тому, что. Возможно, я создал здесь слепое пятно, но как создать собственный источник свойств и добавить его в среду, которая уже существует? Я нашел несколько частных примеров в Интернете, но большинство из них относятся к весне 3, а некоторые, похоже, противоречат друг другу. Буду признателен, если кто-нибудь может это прояснить, так как я думаю, что нахожусь на 99%, но почему-то последний 1% не может «нажать» для меня.