spring 整合rabbitmq(maven环境下)

spring 整合rabbitmq

意味着connection channel exchange queque, spring 来实例化配置,spring提供了rabbitmqTemplate

引入jar<!-- rabbitmq --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.3.5.RELEASE</version> </dependency>
新建一个propertites文件(rabbitmq.properties)

rabbit.url=192.168.2.57
rabbit.port=5672
rabbit.username=admin
rabbit.password=admin

配置rabbitmq的connection factory,由spring来实例化

<rabbit:connection-factory id="connectionFactory"
                               username="${rabbit.username}" password="${rabbit.password}" host="${rabbit.url}" port="${rabbit.port}"/>
    <rabbit:admin connection-factory="connectionFactory"/>

创建mq模板 并指定发送队列为延迟队列路由键 将来使用模板类,对指定连接工厂下的具体路由器(routing-key) 主要用于生产消息的,队列名:delay_queue 路由器的路由键:delay_queue

<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
		queue="delay_queue" routing-key="delay_queue" />

创建延迟队列,该队列将会过期

<rabbit:queue name="delay_queue" auto-declare="true">
		<!-- 定义队列参数: -->
		<rabbit:queue-arguments>
			<!-- 设置消息的存活时间 毫秒数 -->
			<entry key="x-message-ttl" value="60000" value-type="java.lang.Long" />
			<!-- 设置死信路由 -->
			<entry key="x-dead-letter-exchange" value="dead_exchange" />
			<!-- 设置死信路由键 -->
			<entry key="x-dead-letter-routing-key" value="task_queue" />
		</rabbit:queue-arguments>
	</rabbit:queue>

消费者所获得的消息队列

	<!-- 消费者所获取的消息队列 -->
	<rabbit:queue name="task_queue" auto-declare="true" />
	<!-- 配置死信路由 -->
	<rabbit:direct-exchange name="dead_exchange"
		durable="false" auto-delete="false" id="dead_exchange">
		<!-- 死信理由绑定转发的队列 -->
		<rabbit:bindings>
			<rabbit:binding queue="task_queue" />
		</rabbit:bindings>
	</rabbit:direct-exchange>

开启线程,作为rabbitmq的消费者

<bean id="delayTask" class="com.oracle.rabbit.task.ConsumerOrders" />
	<!-- 配置监听容器 -->
	<rabbit:listener-container
		connection-factory="connectionFactory" acknowledge="auto"
		task-executor="taskExecutor">
		<!-- 指定监听队列 使用哪个监听类 定义了 收到消息之后的逻辑 ,来监听 -->
		<rabbit:listener queues="task_queue" ref="delayTask" />
	</rabbit:listener-container>

配置线程池

	<!-- 配置线程池 -->
	<bean id="taskExecutor"
		class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<!-- 线程池维护线程的最少数量 -->
		<property name="corePoolSize" value="5" />
		<!-- 线程池维护线程所允许的空闲时间 -->
		<property name="keepAliveSeconds" value="30000" />
		<!-- 线程池维护线程的最大数量 -->
		<property name="maxPoolSize" value="2000" />
		<!-- 线程池所使用的缓冲队列 -->
		<property name="queueCapacity" value="20" />
	</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring 框架提供了对 RabbitMQ 的支持,可以方便地将 RabbitMQ 集成到 Spring 项目中。 下面是整合 RabbitMQ 的步骤: 1. 添加 RabbitMQ 的依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.3.1.RELEASE</version> </dependency> ``` 2. 配置 RabbitMQ 连接信息 在 application.properties(或 application.yml)文件中添加 RabbitMQ 连接信息: ```properties spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest ``` 3. 创建 RabbitMQ 队列 使用 `RabbitAdmin` 对象创建队列: ```java @Configuration public class RabbitMQConfig { @Bean public Queue myQueue() { return new Queue("myQueue"); } @Bean public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) { return new RabbitAdmin(connectionFactory); } } ``` 4. 发送消息 使用 `RabbitTemplate` 对象发送消息: ```java @Autowired private RabbitTemplate rabbitTemplate; public void sendMessage(String message) { rabbitTemplate.convertAndSend("myQueue", message); } ``` 5. 接收消息 使用 `@RabbitListener` 注解指定要监听的队列,并使用 `Message` 对象接收消息: ```java @RabbitListener(queues = "myQueue") public void receiveMessage(Message message) { String content = new String(message.getBody()); System.out.println("Received message: " + content); } ``` 以上就是使用 Spring 框架整合 RabbitMQ 的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值