Spring-rabbit的简单应用

1.创建Maven工程并导入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<dependencies>

<!-- https://mvnrepository.com/artifact/org.springframework.amqp/spring-rabbit -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>

2. 编写applicationContext.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

<!-- 定义RabbitMQ的连接工厂 -->
<rabbit:connection-factory
id="connectionFactory"
host="localhost"
port="5672"
virtual-host="host100"
username="admin"
password="admin"
/>

<!-- 定义Rabbit模板,指定连接工厂以及定义exchange -->
<rabbit:template id="rabbitTemplate" connection-factory="connectionFactory" exchange="fanoutExchange"/>

<!-- MQ的管理,包括队列,交换机声明等 -->
<rabbit:admin connection-factory="connectionFactory"/>

<!-- 定义交换机 -->
<rabbit:fanout-exchange name="fanoutExchange" auto-declare="true">
<rabbit:bindings>
<rabbit:binding queue="fanout_Queue"></rabbit:binding>
</rabbit:bindings>
</rabbit:fanout-exchange>

<!-- 定义队列 -->
<rabbit:queue name="fanout_Queue" auto-declare="true" durable="true"/>

<!-- 监听队列 -->
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener queue-names="fanout_Queue" ref="consumer" method="listen"></rabbit:listener>
</rabbit:listener-container>

<!-- 消费者 -->
<bean id="consumer" class="com.self.rabbitmq.springrabbit.SpringRabbitConsumer"></bean>


</beans>

3.读取配置文件,获取Rabbit模板对象(生产者)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.self.rabbitmq.springrabbit;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
* Spring-rabbit
* 生产者
*/
public class SpringRabbitProducer {

public static void main(String[] args) throws InterruptedException {

//读取配置文件
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//获取rabbitMQ模板
RabbitTemplate rabbitTemplate = app.getBean("rabbitTemplate", RabbitTemplate.class);
//发送消息
rabbitTemplate.convertAndSend("Hello Spring-rabbit");

Thread.sleep(1000);//休眠1秒
app.close();
}
}

4. 消费者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.self.rabbitmq.springrabbit;

/**
* Spring-Rabbit的消费者
*/
public class SpringRabbitConsumer {


public void listen(String consumer){

System.out.println("消费者 : " + consumer);

}
}

结果输出截图 :

5.结论

通过读取Spring的配置文件applicationContext.xml的形式,创建连接rabbitmq的连接工厂,并声明交换机与队列等。无需写大量的代码,只需要写配置文件即可。