我需要一些帮助。
我正在开发一个spring boot应用程序,我想把消息发布到rabbitMQ。我想把它发送到一个队列,这个队列是在消息本身中命名的。这样我就想动态地创建队列。我只找到了使用“静态”队列的例子。
我研究了一些东西,但没有发现任何东西。我是RabbitMQ的新手,学习了基本概念。我对Spring也相当陌生。
RabbotMQ配置
@Configuration
public class RabbitMQConfig {
@Value("amq.direct")
String exchange;
@Value("queue-name") // Don't want to do this
String queueName;
@Value("routing-key") // Or this
String routingkey;
@Bean
Queue queue() {
return new Queue(queueName, true);
}
@Bean
DirectExchange exchange() {
return new DirectExchange(exchange);
}
@Bean
Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(routingkey);
}
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
@Bean
public AmqpTemplate template(ConnectionFactory connectionFactory) {
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(jsonMessageConverter());
return rabbitTemplate;
}
}
消息发送者
@Service
public class RabbitMQSender {
@Autowired
private AmqpTemplate template;
@Value("amq.direct")
private String exchange;
public void send(MessageDTO message) {
template.convertAndSend(exchange, message);
}
}
2条答案
按热度按时间ht4b089n1#
我来了一个方案:
您需要在您的配置中创建一个AmqpAdmin:
然后将其添加到服务中:
最后,您可以使用它来创建队列和绑定。
我找到了解决方案here
wlp8pajw2#
不确定你使用的是哪个版本的RabbitMQ,但是你的原始代码很接近。这也可以。