六.RabbitMQ高级整合Spring应用

本文介绍了如何在Spring应用中高级整合RabbitMQ,包括RabbitAdmin的使用,RabbitTemplate的操作,SimpleMessageListenerContainer的动态参数配置,以及MessageListenerAdapter在消息消费中的适配方法,提供了一种通过MessageListenerAdapter实现自定义方法名和队列名称映射的策略。
摘要由CSDN通过智能技术生成

1. RabbitAdmin

首先导入amqp的依赖

<!--amqp的starter-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

<!--rabbitmq的客户端-->
<dependency>
	<groupId>com.rabbitmq</groupId>
	<artifactId>amqp-client</artifactId>
	<version>3.6.5</version>
</dependency>


注入RabbitAdmin

//创建一个配置类,并注入下述bean
@Bean
public ConnectionFactory connectionFactory(){
   
	CachingConnectionFactory ConnectionFactory = new CachingConnectionFactory();
	ConnectionFactory.setAddresses("localhost");
	ConnectionFactory.setUsername("guest");
	ConnectionFactory.setPassword("guest");
	ConnectionFactory .setVirtualHost("/");
	return ConnectionFactory ;
}

//方法的形参名称必须和上面的方法名保持一致,不然注入不了ConnectionFactory这个Bean
@Bean
public RabbitAdmin rabbitAdmin(ConnectionFactory ConnectionFactory ){
   
	RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory );
	//必须设置为true,不然spring不能加载rabbitAdmin这个Beam
	rabbitAdmin.setAutoStartup(true);
	return rabbitAdmin;  
}

RabbitAdmin测试代码

	@Autowired
	private RabbitAdmin rabbitAdmin;
		
	@Test
	public void testRabbitAdmin(){
   
		//声明一个交换器,spring将一些交换器的设置封装在了对象的属性中
		rabbitAdmin.decareExchange(new TopicExchange("test,topic",false,false));
		//声明一个队列
		rabbitAdmin.decareQueue(new Queue("test.topic.queue",false));
		/*
			声明一个绑定方式一:decareBinding(destination,destinationType,exchange,routingKey,arguments)
			params:
				destinhation:要绑定的队列名字
				destinationType:绑定类型
				exchange:要绑定的交换器名字
				routingKey:绑定键
				arguments:一些设置的参数,使用map封装
		*/
		rabbitAdmin.decareBinding(new Binding("test.topic.queue",
											  Binding.DestinationType.QUEUE,
											  "test.topic",
											  "test.topic.binding.#"
											  new HashMap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值