package rabbitmq.config.consumer; import org.springframework.amqp.core.AcknowledgeMode; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.transaction.RabbitTransactionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import rabbitmq.config.AbstractDataRabbitConfiguration; import rabbitmq.gateway.BlogDataHandler; /** * * @author XiaoZhi * */ //@Configuration public class RabbitBlogConsumerConfiguration extends AbstractDataRabbitConfiguration{ protected static String routingKey = "blog.basic.data.key"; protected static String EXCHANGE_NAME = "blog.basic.data.exchange"; //@Value("${basic.data.routing.key:user.basic.data.queue}") //private String routingKey = "user.basic.data.key"; @Autowired private BlogDataHandler blogDataHandler; @Autowired private MyErrorHandler myErrorHandler; // @Autowired // private RabbitTransactionManager rabbitTransactionManager; // @Override // protected void configureRabbitTemplate(RabbitTemplate rabbitTemplate) { // rabbitTemplate.setRoutingKey(routingKey); // } // @Bean // public Binding marketDataBinding() { // return BindingBuilder.bind(dataQueue()).to(marketDataExchange()); // } @Bean public DirectExchange marketBlogDataExchange() { return new DirectExchange(EXCHANGE_NAME); } @Bean public Binding marketBlogDataBinding() { return BindingBuilder.bind(dataBlogQueue()).to(marketBlogDataExchange()).with(routingKey); } @Bean public Queue dataBlogQueue() { return new Queue("blog.data.queue",true, false, false); } @Bean public SimpleMessageListenerContainer messageBlogListenerContainer() { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory()); //container.setTransactionManager(rabbitTransactionManager); container.setQueues(dataBlogQueue()); //container.setChannelTransacted(true); container.setErrorHandler(this.myErrorHandler); //container.setAcknowledgeMode(AcknowledgeMode.MANUAL); container.setMessageListener(messageBlogListenerAdapter()); //container.setDefaultRequeueRejected(false); //container.setConcurrentConsumers(5);//消息顺序将不被保障 return container; } @Bean public MessageListenerAdapter messageBlogListenerAdapter() { MessageListenerAdapter mAdapter = new MessageListenerAdapter(blogDataHandler, jsonMessageConverter()); mAdapter.setDefaultListenerMethod("handleBlogDataMessage"); return mAdapter; } }