内容简介:很多基于 rabbitMQ 的自制定化后端管控台在进行设置的时候,也是根据这一去实现的。所以可以看出 SpringAMQP 非常的强大。在上一节的 SpringAMQP 之 RabbitTemplate 的 RabbitMQConfig 原有代码的基础上加上单元测试里面还是继续使用上一次的代码
-
这个类非常的强大,我们可以对他进行很多的设置,用对于消费者的配置项,这个类都可以满足。它有监听单个或多个队列、自动启动、自动声明功能。
-
它可以设置事务特性、事务管理器、事务属性、事务并发、是否开启事务、回滚消息等。但是我们在实际生产中,很少使用事务,基本都是采用补偿机制。
-
它可以设置消费者数量、最小最大数量、批量消费。
-
它可以设置消息确认和自动确认模式、是否重回队列、异常捕获 Handler 函数。
-
它可以设置消费者标签生成策略、是否独占模式、消费者属性等。
-
它还可以设置具体的监听器、消息转换器等等。
注意: SimpleMessageListenerContainer 可以进行动态设置,比如在运行中的应用可以动态的修改其消费者数量的大小、接收消息的模式等。
很多基于 rabbitMQ 的自制定化后端管控台在进行设置的时候,也是根据这一去实现的。所以可以看出 SpringAMQP 非常的强大。
代码示例:
代码地址: https://github.com/hmilyos/rabbitmqdemo.git rabbitmq-api 项目下 复制代码
在上一节的 SpringAMQP 之 RabbitTemplate 的 RabbitMQConfig 原有代码的基础上加上
@Bean //connectionFactory 也是要和最上面方法名保持一致 public SimpleMessageListenerContainer messageContainer(ConnectionFactory connectionFactory) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory); container.setQueues(queue001(), queue002(), queue003()); //监听的队列 container.setConcurrentConsumers(1); //当前的消费者数量 container.setMaxConcurrentConsumers(5); // 最大的消费者数量 container.setDefaultRequeueRejected(false); //是否重回队列 container.setAcknowledgeMode(AcknowledgeMode.AUTO); //签收模式 container.setExposeListenerChannel(true); container.setConsumerTagStrategy(new ConsumerTagStrategy() { //消费端的标签策略 @Override public String createConsumerTag(String queue) { return queue + "_" + UUID.randomUUID().toString(); } }); container.setMessageListener(new ChannelAwareMessageListener() { @Override public void onMessage(Message message, Channel channel) throws Exception { String msg = new String(message.getBody()); log.info("----------消费者: " + msg); } }); return container; } 复制代码
单元测试里面还是继续使用上一次的代码
@Test public void testSendMessage2() throws Exception { //1 创建消息 MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("text/plain"); Message message = new Message("mq 消息1234 --spring.abc".getBytes(), messageProperties); rabbitTemplate.send("topic001", "spring.abc", message); rabbitTemplate.convertAndSend("topic001", "spring.amqp", "hello object message send! -spring.amqp"); rabbitTemplate.convertAndSend("topic002", "rabbit.abc", "hello object message send! -rabbit.abc"); } 复制代码
运行 test 看日志,绑定的三个队列都能被消费
自此,SimpleMessageListenerContainer 的简单使用就介绍完毕, container 里面还有很多方法等着你来使用,我就不继续介绍了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?
- 消息队列(三)常见消息队列介绍
- 消息队列(七)RocketMQ消息发送
- 消息队列探秘 – RabbitMQ 消息队列介绍
- 消息中间件RocketMQ消息发送
- 【消息队列】RabbitMQ如何保证消息顺序
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to Genetic Algorithms
Melanie Mitchell / MIT Press / 1998-2-6 / USD 45.00
Genetic algorithms have been used in science and engineering as adaptive algorithms for solving practical problems and as computational models of natural evolutionary systems. This brief, accessible i......一起来看看 《An Introduction to Genetic Algorithms》 这本书的介绍吧!