
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
生产消息
@Autowired
private AmqpTemplate amqpTemplate;
@RequestMapping("sendMessage")
@ResponseBody
public void sendMessage(String msg) {
Map<String, Object> params = new HashMap<>();
params.put("code", 1);
params.put("msg", msg);
amqpTemplate.convertAndSend("demoExchange", "demo.create", JSON.toJSONString(params));
}
监听队列
@Component
@RabbitListener(queues = "deadQueue")
public class Consumer {
@RabbitHandler
public void queueHandle(String queueMessage, @Headers Map<String, Object> headers, Channel channel) throws IOException {
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
System.out.println("=====>" + queueMessage);
channel.basicAck(deliveryTag,false);
}
}
配置交换机
@Configuration
public class RabbitmqConfig {
@Bean
public Exchange demoExchange() {
return new TopicExchange("demoExchange");
}
@Bean
public Queue demoQueue() {
Map<String, Object> map = new HashMap<>();
map.put("x-dead-letter-exchange", "deadExchange");
map.put("x-dead-letter-routing-key", "deadRouting");
map.put("x-message-ttl", 30 * 1000);
return new Queue("demoQueue", true, false, false, map);
}
@Bean
public Binding demoBinding() {
return new Binding("demoQueue", Binding.DestinationType.QUEUE, "demoExchange", "demo.create", null);
}
@Bean
DirectExchange deadExchange() {
return new DirectExchange("deadExchange", true, false);
}
@Bean
public Queue deadQueue() {
return new Queue("deadQueue", true, false, false);
}
@Bean
Binding deadRouteBinding() {
return new Binding("deadQueue", Binding.DestinationType.QUEUE, "deadExchange", "deadRouting", null);
}
}