在已经大致了解了RabbitMQ的消息模式的基础上,可以研究RabbitMQ如何整合Spring和SpringBoot
1、RabbitMQ整合Spring
1.1、依赖
Spring整合RabbitMQ的依赖有两个,一个是spring-context,一个是spring-rabbit
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
</dependencies>
1.2、编写RabbitMQ的配置文件
在配置文件中,配置rabbitmq-server的相关信息,包括host、port、username、password、virtualhosts。
rabbitmq.host: 192.168.127.131
rabbitmq.port: 5672
rabbitmq.username: admin
rabbitmq.password: 123456
rabbitmq.virtual-host: /
1.3、Producer
1.3.1、编写Spring的配置文件
在Spring配置文件中,将连接工厂、队列、交换机都托管到Spring容器中。
(1)创建连接工厂
<!-- 创建连接工程 -->
<context:property-placeholder location="classpath:rabbitmq.yaml"/>
<rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}" port="${rabbitmq.port}"
username="${rabbitmq.username}" password="${rabbitmq.password}"
virtual-host="${rabbitmq.virtual-host}"
/>
<rabbit:admin connection-factory="connectionFactory"/>
(2)声明队列
<rabbit:queue id="队列类名" name="队列名称" auto-declare="true"/>
示例:
<rabbit:queue id="spring_fanout_queue_1" name="spring_fanout_queue_1" auto-declare="true"/>
(3)声明交换机,绑定交换机和队列
- fanout交换机:
<rabbit:交换机类型 id="交换机id" name="交换机名字" auto-declare="true">
<rabbit:bindings>
<rabbit:binding queue="绑定的队列名"/>
</rabbit:bindings>
</rabbit:fanout-exchange>
- direct交换机
<rabbit:交换机类型 id="交换机id" name="交换机名字" auto-declare="true">
<rabbit:bindings>
<rabbit:binding queue="绑定的队列名" key="路由"/>
</rabbit:bindings>
</rabbit:fanout-exchange>
- topic交换机
<rabbit:交换机类型 id="交换机id" name="交换机名字" auto-declare="true">
<rabbit:bindings>
<rabbit:binding queue="绑定的队列名" pattern="路由pattern"/>
</rabbit:bindings>
</rabbit:fanout-exchange>
示例:
<