赞
踩
rabbitmq: host: localhopst #服务器地址 port: 5672 virtual-host: /name #rabbitmq的虚拟host # 当前用户的用户名和密码; username: guest password: guest publisher-confirm-type: correlated # 支持发布订阅 publisher-return: true # 支持发布返回 # 虚拟主机名称 listener: simple: # 设置当前消费者数量(线程数) concurrency: 5 # 设置消费者最大并发数量 max-concurrency: 10 # 每个消费者可能未完成的最大未确定消息数量 prefech: 1
//创建连接工厂
ConnectionFactory factory=new ConnectionFactory();
//设置服务器地址
factory.setHost(host);
//设置服务器端口
factory.setPort(port);
//设置虚拟主机
factory.setVirtualHost(virtualHost);
//设置用户名
factory.setUsername(userName);
//设置密码
factory.setPassword(password);
//1.用@Value从yml文件中获取出配置信息到类的变量上 //2.创建方法:连接工厂、rabbitTemplate、单一消费者、多个消费者: /** * rabbitMQ 连接工厂 */ @Bean public ConnectionFactory connectionFactory() { //创建连接工厂 CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); //设置参数 connectionFactory.setAddresses(hostname + ":" + port); connectionFactory.setUsername(username); connectionFactory.setPassword(password); connectionFactory.setVirtualHost(virtualHost); connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.valueOf(publisherConfirmType.toUpperCase())); //返回一个配置好的连接工厂实例 return connectionFactory; } /** * 配置rabbitTemplate */ @Bean //取消springIOC默认单例模式。更改为多例模式 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate() { //每次调用都将创建新的rabbitTemplate对象;并将连接工厂传进去 return new RabbitTemplate(connectionFactory()); } /** * 单一消费者 */ @Bean(name = "singleListenerContainer") public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory()); //单一消费者 factory.setConcurrentConsumers(1); //最大消费者数量 factory.setMaxConcurrentConsumers(1); //每个消费者可能未完成的最大未确认消息数量:1.就是处理完一个再去接受下一个信息 factory.setPrefetchCount(1); //确认消息类型:手动 factory.setAcknowledgeMode(AcknowledgeMode.MANUAL); return factory; } /** * 多个消费者 */ @Bean(name = "multiListenerContainer") public SimpleRabbitListenerContainerFactory multiListenerContainerFactory(){ SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory()); //设置当前消费者数量(线程数) factory.setConcurrentConsumers(concurrency); //设置消费者最大并发数量 factory.setMaxConcurrentConsumers(maxConcurrency); //每个消费者可能未完成的最大未确认消息数量 factory.setPrefetchCount(prefetch); //确认消息类型:手动 factory.setAcknowledgeMode(AcknowledgeMode.MANUAL); return factory; }
//1.定义交换机;
//2.定义队列;
//3.定义交换机绑定队列;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。