rabbitmq-plugins list
可以看到下面的输出:
这就算是启用成功了。
需要注意的是:
Mochiweb 必须得有,MochiWeb是一个用来构建Web应用的轻便,高效的
HTTP应用框架的Erlang库
输入用户名和密码,用默认的guest/guest即可
管理插件创建用户
设置权限,权限设置为administrator(管理员)
C:\Users\kk\AppData\Roaming\RabbitMQ\log
队列消息日志
pom.xml添加Jar包
<!-- RabbitMQ -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<!-- <version>3.0.4</version> -->
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<!-- RabbitMQ -->
1: 融入web项目
生产者(发送消息):
1.配置spring-producer.xml
<!-- 连接服务配置 -->
<rabbit:connection-factory id="connectionFactory"
host="127.0.0.1" username="guest" password="guest" port="5672" />
<rabbit:admin connection-factory="connectionFactory" />
<!-- queue 队列声明 -->
<!-- durable=true,交换机持久化,rabbitmq服务重启交换机依然存在,保证不丢失; durable=false,相反 -->
<!-- auto-delete=true:无消费者时,队列自动删除; auto-delete=false:无消费者时,队列不会自动删除 -->
<!-- 排他性,exclusive=true:首次申明的connection连接下可见; exclusive=false:所有connection连接下都可见 -->
<rabbit:queue id="queue_li" durable="true" auto-delete="false"
exclusive="false" name="queue_li" />
<!-- exchange queue binging key 绑定 -->
<!-- durable=true,交换机持久化,rabbitmq服务重启交换机依然存在,保证不丢失; durable=false,相反 -->
<!-- auto-delete=true:无消费者时,队列自动删除; auto-delete=false:无消费者时,队列不会自动删除 -->
<rabbit:direct-exchange name="exchange_li"
durable="true" auto-delete="false" id="exchange_li">
<rabbit:bindings>
<rabbit:binding queue="queue_li" key="queue_key_li" />
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 创建一个消息模板 -->
<rabbit:template id="amqpTemplate" exchange="exchange_li"
connection-factory="connectionFactory" />
2.web.xml里加载spring-consumer.xml
3.创建一个生产者类
注入模板
@Autowired
private AmqpTemplate amqpTemplate;
4.定义一个方法将消息传输到消息队列中
@RequestMapping("sendOne")
@ResponseBody
public String SendOne(String message){
//第一个参数为队列key,第二参数为传输的值
amqpTemplate.convertAndSend("queue_key_li",message);
System.out.println("消息发送成功,发送消息为:"+message);
return "success";
}
生产者配置完成
消费者(处理请求),
1.pom.xml导入同样的jar包
2.创建一个消费者类,
定义实现MessageListener接口,并实现他的抽象类onMessage()
这个抽象方法是用来处理它接收到的请求的方法
public class ConsumerLitener implements MessageListener {
@Override
public void onMessage(Message arg0) {
String message = new String(arg0.getBody());
System.out.println("消息已经接收:"+ message);
}
}
3.创建一个spring-rabbit-consumer.xml
<!-- 连接服务配置 -->
<rabbit:connection-factory id="connectionFactory"
host="127.0.0.1" username="guest" password="guest" port="5672" />
<rabbit:admin connection-factory="connectionFactory" />
<!-- queue 队列声明 -->
<rabbit:queue id="queue_li" durable="true" auto-delete="false"
exclusive="false" name="queue_li" />
<!-- exchange queue binging key 绑定 -->
<rabbit:direct-exchange name="exchange_li"
durable="true" auto-delete="false" id="exchange_li">
<rabbit:bindings>
<rabbit:binding queue="queue_li" key="queue_key_li" />
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 定义消费者监听器 -->
<!-- 创建一个bean实例,bean实例中声明处理请求的类 -->
<bean id="consumerLitener" class="com.jk.rabbit.ConsumerLitener"></bean>
<rabbit:listener-container
connection-factory="connectionFactory" acknowledge="auto">
<!-- queues属性从那个队列中接收消息,ref属性是当存在消息是使用哪个类去处理 -->
<rabbit:listener queues="queue_li" ref="consumerLitener" />
</rabbit:listener-container>
4.web.xml加载spring-rabbit-consumer.xml文件
消费者配置完成
3: 如何新开一个消息
配置文件带背景色的代码一复制就完成了兄弟
接受方代码:
public class TestRe implements MessageListener{
@Override
public void onMessage(Message arg0) {
// TODO Auto-generated method stub
String message = new String(arg0.getBody());
System.out.println("消息已经接收:"+ message);
}
加配置文件spring-rabbitmq-consumer.xml
web.xml中加
<!-- 配置spring的核心配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-rabbitmq-consumer.xml</param-value>
</context-param>
<!-- 通过listenner监听器加载spring的核心处理类 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
发送方代码:
public class test {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("src/main/resources/spring-rabbitmq-producer.xml");
AmqpTemplate amqpTemplate = (AmqpTemplate)context.getBean("amqpTemplate");
String message="抢手机";
amqpTemplate.convertAndSend("queue_key_li",message);
System.out.println("发消息"+message);
}
加配置文件:spring-rabbitmq-producer.xml
注意pom.xml中加jar包
<!-- RabbitMQ -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<!-- <version>3.0.4</version> -->
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<!-- RabbitMQ -->