Я использую rabbit mq 3.7.4 и имею очередь с x-max-length: 3 и x-overflow: reject-publish, я пытаюсь перенаправить те сообщения, которые приходят, когда очередь достигает своего максимального предела (т.е. от 4-го сообщения ... до сообщения) в очередь тупиковой рассылки, но не удалось достичь.
щедро помогите с тем же
Моя конфигурация:
@Configuration
@EnableAutoConfiguration
public abstract class AMQPConfig {
@Value("${overflow-queue.exchange}")
private String queueExchange;
@Value("${overflow-queue.routingkey}")
private String throttleRoutingKey;
@Value("${overflow.queue}")
private String queue;
/**
* abstract ampqTemplate method
*/
public abstract AmqpTemplate getAmqpTemplate();
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
@Bean
public TopicExchange salesExchange() {
return new TopicExchange(queueExchange);
}
@Bean
public Queue salesQueue() {
return //QueueBuilder.durable(throttleQueue)
QueueBuilder.durable(queue)
.withArgument("x-max-length", 3)
.withArgument("x-overflow", "reject-publish")
.withArgument("x-dead-letter-exchange",queueExchange)
.withArgument("x-dead-letter-routing-key","deadletter-routing-key")
.build();
}
@Bean
public Binding declareSalesQueueBinding() {
return BindingBuilder.bind(salesQueue()).to(salesExchange()).with(queue);//with(throttleQueue);
}
@Bean
public MappingJackson2MessageConverter consumerJackson2MessageConverter() {
return new MappingJackson2MessageConverter();
}
@Bean
public DefaultMessageHandlerMethodFactory messageHandlerMethodFactory() {
DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
factory.setMessageConverter(consumerJackson2MessageConverter());
return factory;
}
}
МОЙ ПРОИЗВОДИТЕЛЬ:
@Service
public class Producer {
private static long sentMessageCount =0L;
@Autowired
private AmqpTemplate rabbitTemplate;
@Value("${overflow.queue}")
String queueName;
@Scheduled(initialDelay = 5000, fixedRate = 10)
public void queueSender() {
long x=++sentMessageCount;
rabbitTemplate.convertAndSend(queueName,"{'empId':'"+x+"','empName':'raj'}");
}
}