Я создаю микросервис и не хочу, чтобы он автоматически создавал очереди в RabbitMQ.
Я создал пользователя RabbitMQ через графический интерфейс, без разрешений на настройку, только на чтение и запись, чтобы избежать создания очередей.
Виртуальный хост
Настройка регулярного выражения
Запись регулярного выражения
Чтение регулярного выражения
/
^$
.*
.*
Поэтому я настроил потребителя JMS для очереди:
@Component
public class MessageConsumer {
@JmsListener(destination = "${rabbitmq.queueName}")
public void onMessage(Message message) throws JMSException {
//logic here
}
}
При запуске приложения возникает следующая ошибка, хотя очередь существует:
com.rabbitmq.client.ShutdownSignalException: ошибка канала; метод протокола: #method(reply-code=403, ответ-текст=ACCESS_REFUSED - настройка доступа к обмену 'jms.durable.queues' в vhost '/' отклонена для пользователя 'app-user', class-id=40, Method-id=10)
Очевидно, JMS требует разрешения на создание очереди.
Если Я меняю «Настроить регулярное выражение» на «.*», ошибка исчезает, но очередь создается автоматически, если она не существует.
Есть ли способ предотвратить автоматическое создание очередей с помощью JMS и RabbitMQ?
Я не могу допустить опечатки в имени очереди в файле конфигурации для создания новой очереди, что приведет к генерации тихой ошибки, которую трудно отследить.
Это bean-компонент настройки:
@Configuration
@EnableJms
public class MessageConfiguration {
@Bean
public ConnectionFactory createConnectionFactory(//
@Value("${rabbitmq.host}") String host, //
@Value("${rabbitmq.port}") int port, //
@Value("${rabbitmq.vhost}") String vhost, //
@Value("${rabbitmq.username}") String username, //
@Value("${rabbitmq.password}") String password//
) {
RMQConnectionFactory factory = new RMQConnectionFactory();
factory.setHost(host);
factory.setPort(port);
factory.setVirtualHost(vhost);
factory.setUsername(username);
factory.setPassword(password);
return factory;
}
@Bean
public JmsTemplate createJmsTemplate(@Autowired ConnectionFactory connectionFactory,
@Autowired MessageConverter messageConverter) {
JmsTemplate template = new JmsTemplate(connectionFactory);
template.setMessageConverter(messageConverter);
return template;
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
@Autowired ConnectionFactory connectionFactory, @Autowired MessageConverter messageConverter) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMessageConverter(messageConverter);
factory.setSessionTransacted(true);
return factory;
}
@Bean
public MessageConverter createMessageConverter() {
JacksonJsonMessageConverter converter = new JacksonJsonMessageConverter(//
JsonMapper.builder()//
.changeDefaultPropertyInclusion(i -> i.withValueInclusion(JsonInclude.Include.NON_NULL))//
.build());
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("type");
return converter;
}
}
Как предотвратить автоматическое создание очереди ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1778135413
Anonymous
Я создаю микросервис и не хочу, чтобы он автоматически создавал очереди в RabbitMQ.
Я создал пользователя RabbitMQ через графический интерфейс, без разрешений на настройку, только на чтение и запись, чтобы избежать создания очередей.
Виртуальный хост
Настройка регулярного выражения
Запись регулярного выражения
Чтение регулярного выражения
/
^$
.*
.*
Поэтому я настроил потребителя JMS для очереди:
@Component
public class MessageConsumer {
@JmsListener(destination = "${rabbitmq.queueName}")
public void onMessage(Message message) throws JMSException {
//logic here
}
}
При запуске приложения возникает следующая ошибка, хотя очередь существует:
com.rabbitmq.client.ShutdownSignalException: ошибка канала; метод протокола: #method(reply-code=403, ответ-текст=ACCESS_REFUSED - настройка доступа к обмену 'jms.durable.queues' в vhost '/' отклонена для пользователя 'app-user', class-id=40, Method-id=10)
Очевидно, JMS требует разрешения на создание очереди.
Если Я меняю «Настроить регулярное выражение» на «.*», ошибка исчезает, но очередь создается автоматически, если она не существует.
Есть ли способ предотвратить автоматическое создание очередей с помощью JMS и RabbitMQ?
Я не могу допустить опечатки в имени очереди в файле конфигурации для создания новой очереди, что приведет к генерации тихой ошибки, которую трудно отследить.
Это bean-компонент настройки:
@Configuration
@EnableJms
public class MessageConfiguration {
@Bean
public ConnectionFactory createConnectionFactory(//
@Value("${rabbitmq.host}") String host, //
@Value("${rabbitmq.port}") int port, //
@Value("${rabbitmq.vhost}") String vhost, //
@Value("${rabbitmq.username}") String username, //
@Value("${rabbitmq.password}") String password//
) {
RMQConnectionFactory factory = new RMQConnectionFactory();
factory.setHost(host);
factory.setPort(port);
factory.setVirtualHost(vhost);
factory.setUsername(username);
factory.setPassword(password);
return factory;
}
@Bean
public JmsTemplate createJmsTemplate(@Autowired ConnectionFactory connectionFactory,
@Autowired MessageConverter messageConverter) {
JmsTemplate template = new JmsTemplate(connectionFactory);
template.setMessageConverter(messageConverter);
return template;
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
@Autowired ConnectionFactory connectionFactory, @Autowired MessageConverter messageConverter) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMessageConverter(messageConverter);
factory.setSessionTransacted(true);
return factory;
}
@Bean
public MessageConverter createMessageConverter() {
JacksonJsonMessageConverter converter = new JacksonJsonMessageConverter(//
JsonMapper.builder()//
.changeDefaultPropertyInclusion(i -> i.withValueInclusion(JsonInclude.Include.NON_NULL))//
.build());
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("type");
return converter;
}
}
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия