ework.messaging.handler.annotation.Headers;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Service;
import com.hys.springboot.config.RabbitMQConfig;
import com.hys.springboot.entity.Order;
import com.hys.springboot.service.IRabbitReceiverService;
import com.rabbitmq.client.Channel;
@Service
public class RabbitReceiverServiceImpl implements IRabbitReceiverService {
private static final Log logger = LogFactory.getLog(RabbitReceiverServiceImpl.class);
@RabbitListener(bindings = @QueueBinding(value = @Queue(value = RabbitMQConfig.TOPIC_QUEUE, durable = "true"), exchange = @Exchange(value = RabbitMQConfig.TOPIC_EXCHANGE, durable = "true", type = ExchangeTypes.TOPIC), key = RabbitMQConfig.TOPIC_ROUTINGKEY))
@RabbitHandler
@Override
public void receiveTopicMessage(Message<Object> message, Channel channel) throws IOException {
if (logger.isDebugEnabled()) {
logger.debug("消费端Payload:" + message.getPayload());
}
Long deliveryTag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
//手工ack
channel.basicAck(deliveryTag, false);
}
@RabbitListener(bindings = @QueueBinding(value = @Queue(value = RabbitMQConfig.DIRECT_QUEUE, durable = "true"), exchange = @Exchange(value = RabbitMQConfig.DIRECT_EXCHANGE, durable = "true", type = ExchangeTypes.DIRECT), key = RabbitMQConfig.DIRECT_ROUTINGKEY))
@RabbitHandler
@Override
public void receiveOrderTopicMessage(@Payload Order order, Channel channel, @Headers Map<String, Object> headers) throws IOException {
if (logger.isDebugEnabled()) {
logger.debug("消费端Payload:" + order);
}
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
//手工ack
channel.basicAck(deliveryTag, false);
}
}