1.创建一个项目
2.pom.xml
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.0.4</version>
</dependency>
3.spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<!-- 扫描文件(自动将servicec层注入) -->
<context:component-scan base-package="com.guilf.project.service"/>
</beans>
4.RabbitMQUtil.java
/**
*
*/
/**
* @author DELL
*
*/
package com.guilf.project.rabbitMQ.util;
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
public class RabbitMQUtil
{
private final static String QUEUE_NAME = "guilfRabbitMQ";
public static Connection getConnection()
{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.88.134");//MQ的ip地址
factory.setPort(5672);//mq的接口
factory.setUsername("admin");//mq用户名
factory.setPassword("admin");//mq密码
Connection connection;
try
{
connection = factory.newConnection();// 建立连接
return connection;
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
public static void getProducerRabbitMQ(Connection connection, String message)
{
// 创建一个通道
Channel channel;
try
{
channel = connection.createChannel();
//申明一个队列,如果这个队列不存在,将会被创建
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 发送消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
channel.close();//关闭
connection.close();//关闭
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static void getConsumerRabbitMQ(Connection connection)
{
// 创建一个通道
Channel channel;
try
{
channel = connection.createChannel();
//申明一个队列,如果这个队列不存在,将会被创建
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("================等待消息产生:==============");
// 创建消费者对象,用于读取消息
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, queueingConsumer);
// 读取队列,并且阻塞,在读到消息之前在这里阻塞,知道等到消息,完成消息的阅读后,继续阻塞循环
while(true)
{
QueueingConsumer.Delivery delivery = queueingConsumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println("====s收到消息:====="+message+"==========");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
5 RabbitMQConsumerServiceImpl.java (还有一个接口) 消费
package com.guilf.project.service.impl;
import org.springframework.stereotype.Service;
import com.guilf.project.rabbitMQ.util.RabbitMQUtil;
import com.guilf.project.service.RabbitMQConsumerService;
import com.rabbitmq.client.Connection;
@Service("rabbitMQConsumerService")
public class RabbitMQConsumerServiceImpl implements RabbitMQConsumerService
{
public String rabbitMQConsumer(String messger) throws Exception {
Connection connection = RabbitMQUtil.getConnection();
RabbitMQUtil.getConsumerRabbitMQ(connection);
return messger;
}
}
6.RabbitMQProducerServiceImpl.java (还有一个接口)生产
package com.guilf.project.service.impl;
import org.springframework.stereotype.Service;
import com.guilf.project.rabbitMQ.util.RabbitMQUtil;
import com.guilf.project.service.RabbitMQProducerService;
import com.rabbitmq.client.Connection;
@Service("rabbitMQProducerService")
public class RabbitMQProducerServiceImpl implements RabbitMQProducerService
{
public String rabbitMQProducer(String messger) throws Exception {
Connection connection = RabbitMQUtil.getConnection();
String message1 = messger;
System.out.println("=============1========");
RabbitMQUtil.getProducerRabbitMQ(connection, message1);
System.out.println("=============2========");
return messger;
}
}
7 RabbitMQTest.java
import org.junit.Test;
import org.junit.Before;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.guilf.project.entity.User;
import com.guilf.project.service.RabbitMQConsumerService;
import com.guilf.project.service.RabbitMQProducerService;
import com.guilf.project.service.UserService;
public class RabbitMQTest
{
private RabbitMQConsumerService rabbitMQConsumerService;
private RabbitMQProducerService rabbitMQProducerService;
@Before
public void before(){
@SuppressWarnings("resource")
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:conf/spring.xml"});
rabbitMQConsumerService = (RabbitMQConsumerService) context.getBean("rabbitMQConsumerService");
rabbitMQProducerService = (RabbitMQProducerService) context.getBean("rabbitMQProducerService");
}
@Test
public void testInsertUser1()
{
try {
rabbitMQProducerService.rabbitMQProducer("guilfFirstRabbitMQ2");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testInsertUser()
{
try {
rabbitMQConsumerService.rabbitMQConsumer("w");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
7.启动,可以直接传,也可以在mq上直接操作