依赖
<dependencies>
<dependency>
<groupId>com
.rabbitmq
</groupId
>
<artifactId>amqp
-client
</artifactId
>
<version>5.5.3</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
.amqp
</groupId
>
<artifactId>spring
-rabbit
</artifactId
>
<version>2.1.3.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>com
.fasterxml
.jackson
.core
</groupId
>
<artifactId>jackson
-databind
</artifactId
>
<version>2.9.5</version
>
</dependency
>
</dependencies
>
生产者依赖
<dependencies>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-context
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-core
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-context
-support
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>com
.rabbitmq
</groupId
>
<artifactId>amqp
-client
</artifactId
>
<version>5.5.3</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
.amqp
</groupId
>
<artifactId>spring
-rabbit
</artifactId
>
<version>2.1.3.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>com
.fasterxml
.jackson
.core
</groupId
>
<artifactId>jackson
-databind
</artifactId
>
<version>2.9.5</version
>
</dependency
>
<dependency>
<groupId>junit
</groupId
>
<artifactId>junit
</artifactId
>
<version>4.12</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-test
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
</dependencies
>
生产者配置文件
<beans xmlns
="http://www.springframework.org/schema/beans"
xmlns
:context
="http://www.springframework.org/schema/context"
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.2.xsd
http
://www
.springframework
.org
/schema
/context
http
://www
.springframework
.org
/schema
/context
/spring
-context
.xsd"
>
<context
:component
-scan base
-package="cn.itcast.rabbitmq.spring"/>
<!-- 配置连接工厂
-->
<rabbit
:connection
-factory id
="connectionFactory" virtual
-host
="/saas"
host
="127.0.0.1" port
="5672" username
="saas" password
="saas" />
<!-- 定义mq管理
-->
<rabbit
:admin connection
-factory
="connectionFactory" />
<!-- 声明队列
-->
<rabbit
:queue name
="spring.test.queue" auto
-declare
="true" durable
="true" />
<!-- 定义交换机绑定队列(路由模式)
-->
<rabbit
:direct
-exchange name
="spring.test.exchange">
<rabbit
:bindings
>
<rabbit
:binding queue
="spring.test.queue" key
="user.insert" />
</rabbit
:bindings
>
</rabbit
:direct
-exchange
>
<!-- 定义交换机绑定队列(路由模式)使用匹配符
<rabbit
:topic
-exchange id
="springTestExchange" name
="spring.test.exchange">
<rabbit
:bindings
>
<rabbit
:binding queue
="spring.test.queue" pattern
="#.#" />
</rabbit
:bindings
>
</rabbit
:topic
-exchange
>
-->
<!-- 消息对象json转换类
-->
<bean id
="jsonMessageConverter"
class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
<!-- 定义模版
-->
<rabbit
:template id
="rabbitTemplate" connection
-factory
="connectionFactory"
exchange
="spring.test.exchange"
message
-converter
="jsonMessageConverter"/>
</beans
>
package cn
.itcast
.rabbitmq
.spring
;
import org
.springframework
.amqp
.core
.AmqpTemplate
;
import org
.springframework
.amqp
.rabbit
.core
.RabbitTemplate
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.stereotype
.Component
;
@Component
public class MqSender {
private AmqpTemplate amqpTemplate
;
public void sendMessage(){
amqpTemplate
.convertAndSend("user.insert","spring整合RabbitMQ消息");
System
.out
.println("发送成功........");
}
}
package cn
.itcast
.rabbitmq
.spring
;
import org
.junit
.Test
;
import org
.junit
.runner
.RunWith
;
import org
.springframework
.amqp
.core
.AmqpTemplate
;
import org
.springframework
.amqp
.rabbit
.core
.RabbitTemplate
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.context
.support
.ClassPathXmlApplicationContext
;
import org
.springframework
.test
.context
.ContextConfiguration
;
import org
.springframework
.test
.context
.junit4
.SpringJUnit4ClassRunner
;
import org
.springframework
.test
.context
.junit4
.SpringRunner
;
import java
.util
.HashMap
;
@RunWith(SpringJUnit4ClassRunner
.class)
@ContextConfiguration(locations
= "classpath:applicationContext-p.xml")
public class MqSendDemo {
@Autowired
private MqSender mqSender
;
@Test
public void test(){
mqSender
.sendMessage();
}
}
消费者
依赖
<dependencies>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-context
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-core
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-context
-support
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>com
.rabbitmq
</groupId
>
<artifactId>amqp
-client
</artifactId
>
<version>5.5.3</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
.amqp
</groupId
>
<artifactId>spring
-rabbit
</artifactId
>
<version>2.1.3.RELEASE
</version
>
</dependency
>
<dependency>
<groupId>com
.fasterxml
.jackson
.core
</groupId
>
<artifactId>jackson
-databind
</artifactId
>
<version>2.9.5</version
>
</dependency
>
<dependency>
<groupId>junit
</groupId
>
<artifactId>junit
</artifactId
>
<version>4.12</version
>
</dependency
>
<dependency>
<groupId>org
.springframework
</groupId
>
<artifactId>spring
-test
</artifactId
>
<version>5.0.2.RELEASE
</version
>
</dependency
>
</dependencies
>
配置文件
<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
.xsd
http
://www
.springframework
.org
/schema
/beans
http
://www
.springframework
.org
/schema
/beans
/spring
-beans
.xsd"
>
<!-- 配置连接工厂
-->
<rabbit
:connection
-factory id
="connectionFactory" virtual
-host
="/saas"
host
="127.0.0.1" port
="5672" username
="saas" password
="saas" />
<!-- 定义mq管理
-->
<rabbit
:admin connection
-factory
="connectionFactory" />
<!-- 声明队列
-->
<rabbit
:queue name
="spring.test.queue" auto
-declare
="true" durable
="true" />
<!-- 定义消费者
-->
<bean id
="testMqListener" class="cn.itcast.rabbitmq.spring.MqListener" />
<!-- 定义消费者监听队列
-->
<rabbit
:listener
-container
connection
-factory
="connectionFactory">
<rabbit
:listener ref
="testMqListener" queues
="spring.test.queue" />
</rabbit
:listener
-container
>
</beans
>
package cn
.itcast
.rabbitmq
.spring
;
import org
.springframework
.amqp
.core
.Message
;
import org
.springframework
.amqp
.core
.MessageListener
;
import org
.springframework
.stereotype
.Component
;
import java
.io
.UnsupportedEncodingException
;
public class MqListener implements MessageListener {
public void onMessage(Message message
) {
try {
System
.out
.println(message
.getBody());
String ms
= new String(message
.getBody(), "UTF-8");
System
.out
.println(ms
);
} catch (Exception e
) {
e
.printStackTrace();
}
}
}
测试
package cn
.itcast
;
import org
.springframework
.context
.support
.ClassPathXmlApplicationContext
;
public class MqConsumerTest {
public static void main(String
[] args
) throws Exception
{
ClassPathXmlApplicationContext app
= new ClassPathXmlApplicationContext("classpath:applicationContext-c.xml");
app
.start();
System
.in
.read();
}
}