#rabbitmq spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=longlong spring.rabbitmq.password= spring.rabbitmq.virtual-host=/ #消费者数量 spring.rabbitmq.listener.simple.concurrency= 10 spring.rabbitmq.listener.simple.max-concurrency= 10 #消费者每次从队列获取的消息数量 spring.rabbitmq.listener.simple.prefetch= 1 #消费者自动启动 spring.rabbitmq.listener.simple.auto-startup=true #消费失败,自动重新入队 spring.rabbitmq.listener.simple.default-requeue-rejected= true #启用发送重试 spring.rabbitmq.template.retry.enabled=true spring.rabbitmq.template.retry.initial-interval=1000 spring.rabbitmq.template.retry.max-attempts=3 spring.rabbitmq.template.retry.max-interval=10000 spring.rabbitmq.template.retry.multiplier=1.0
@Configuration public class MQConfig { public static final String HEADER_QUEUE = "header.queue"; public static final String HEADERS_EXCHANGE = "headersExchage"; /** * Header模式 交换机Exchange * */ @Bean public HeadersExchange headersExchage(){ return new HeadersExchange(HEADERS_EXCHANGE); } @Bean public Queue headerQueue1() { return new Queue(HEADER_QUEUE, true); } @Bean public Binding headerBinding() { Map<String, Object> map = new HashMap<String, Object>(); map.put("header1", "value1"); map.put("header2", "value2"); return BindingBuilder.bind(headerQueue1()).to(headersExchage()).whereAll(map).match(); } }
@Service public class MQSender { private static Logger log = LoggerFactory.getLogger(MQSender.class); @Autowired AmqpTemplate amqpTemplate ; public void sendHeader(Object message) { String msg = RedisService.beanToString(message); MessageProperties properties = new MessageProperties(); properties.setHeader("header1", "value1"); properties.setHeader("header2", "value2"); Message obj = new Message(msg.getBytes(), properties); amqpTemplate.convertAndSend(MQConfig.HEADERS_EXCHANGE, "", obj); } }
@Service public class MQReceiver { private static Logger log = LoggerFactory.getLogger(MQReceiver.class); @RabbitListener(queues=MQConfig.HEADER_QUEUE) public void receiveHeaderQueue(byte[] message) { log.info(" header queue message:"+new String(message)); } }