博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Declare&bind queue dynamically with RabbitMQ
阅读量:5999 次
发布时间:2019-06-20

本文共 4133 字,大约阅读时间需要 13 分钟。

hot3.png

/** * Copyright © Cisco Systems, Inc.  */package com.cisco.cmse.csra.cluster.rabbitmq;import org.springframework.amqp.core.AmqpAdmin;import org.springframework.amqp.core.TopicExchange;import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;import org.springframework.amqp.rabbit.connection.ConnectionFactory;import org.springframework.amqp.rabbit.core.RabbitAdmin;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.amqp.support.converter.JsonMessageConverter;import org.springframework.amqp.support.converter.MessageConverter;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @author sanlli * */@Configurationpublic abstract class AbstractRabbitConfiguration {		private static final String Reload_Policy_Exchange = "Reload_Policy_Exchange";	@Value("${rabbitmq_addresses}")	private String addresses;		@Bean    public ConnectionFactory connectionFactory() {        CachingConnectionFactory connectionFactory =            new CachingConnectionFactory(addresses);        connectionFactory.setUsername("guest");        connectionFactory.setPassword("guest");        return connectionFactory;    }		@Bean	public AmqpAdmin amqpAdmin(){		return new RabbitAdmin(connectionFactory());	}    @Bean    public RabbitTemplate amqpTemplate() {        RabbitTemplate template = new RabbitTemplate(connectionFactory());        template.setMessageConverter(jsonMessageConverter());        template.setExchange(Reload_Policy_Exchange);        return template;    }    @Bean    public MessageConverter jsonMessageConverter() {        return new JsonMessageConverter();    }    @Bean    public TopicExchange reloadPolicyExchange() {		TopicExchange exchange = new TopicExchange(Reload_Policy_Exchange, true, false);        return exchange;    }   }

/** * Copyright © Cisco Systems, Inc.  */package com.cisco.cmse.csra.cluster.rabbitmq;import java.net.InetAddress;import java.net.UnknownHostException;import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.BindingBuilder;import org.springframework.amqp.core.Queue;import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.task.TaskExecutor;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import com.cisco.cmse.csra.cluster.message.ReloadNotificationMessageListener;/** * @author sanlli * */@Configurationpublic class RabbitClientConfiguration extends AbstractRabbitConfiguration {	@Bean    public Queue reloadPolicyQueue(){    	String locahost = "0.0.0.0";		try {			locahost = InetAddress.getLocalHost().getHostAddress();		} catch (UnknownHostException e) {			try {				locahost = InetAddress.getLocalHost().getHostName();			} catch (UnknownHostException e1) {				locahost = "0.0.0.0";			}		}		return new Queue(locahost, true, false, false);    }        @Bean    public Binding reloadPolicyBinding() {        return BindingBuilder.bind(reloadPolicyQueue()).to(reloadPolicyExchange()).with("reload.#");    }        @Bean    public TaskExecutor taskExecutor(){    	ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();    	taskExecutor.setMaxPoolSize(10);    	taskExecutor.setCorePoolSize(10);    	taskExecutor.setQueueCapacity(1500);    	return taskExecutor;    }        @Bean    public ReloadNotificationMessageListener reloadNotificationMessageListener(){    	return new ReloadNotificationMessageListener();    }        @Bean    public SimpleMessageListenerContainer messageListenerContainer() {        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();        container.setConnectionFactory(connectionFactory());        container.setTaskExecutor(taskExecutor());        container.setQueues(reloadPolicyQueue());        container.setMessageListener(reloadNotificationMessageListener());        return container;    }    }

转载于:https://my.oschina.net/u/563848/blog/209676

你可能感兴趣的文章
android 使用android.support.v7 添加ActionBar
查看>>
JSP内置对象之WEB安全性及config对象
查看>>
Mysql的float类型造成的困扰总结
查看>>
会计基础模拟练习一(3)
查看>>
extjs4.0以上添加多行工具栏的方法
查看>>
监控的几个网站
查看>>
SQL2008附加数据库提示错误:5120
查看>>
emacs之配置自动安装脚本
查看>>
wamp多站点多端口配置
查看>>
c# MongoDB插入和批量插入,插入原理
查看>>
解释#ifdef ALLOC_PRAGMA代码段的原理
查看>>
C#中如何查找Dictionary中的重复值
查看>>
C++中int型与string型互相转换 - 大气象 - 博客园
查看>>
jquery.mmenu
查看>>
memcache stats命令详解
查看>>
[开发笔记]-DataGridView控件中自定义控件的使用
查看>>
解决sourcesafe admin用户自动登录并且不用密码的问题
查看>>
HTML5 LocalStorage 本地存储
查看>>
XCode 5资源文件不自动更新问题
查看>>
typedef与define
查看>>