开始在学习RabbitMQ,先搜索了下,发现看不懂不知道Routing key 和binding key指什么,就去官网阅读了英文原版,然后就是敲代码熟悉熟悉,最后不知道在哪执行以及怎么执行,因为按照官网来说的话是有消费者和生产者的,这两个要同时启动,在ideal中只能开启一个啊,后来我才知道可以在dos命令行下开启多个窗口分别充当消费者和生产者。
这是消息生产者的代码(官网上的),这个并不是重点,怕你们好奇,所以。。。
public class Sender {
private static final String QUEUE_NAME="kris";
public static void main(String[] args){
send();
}
private static void send(){
ConnectionFactory factory;
Connection conn=null;
Channel channel=null;
try {
factory =new ConnectionFactory();
factory.setHost("localhost");
conn=factory.newConnection();
channel=conn.createChannel();
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
String msg="kris,I 'm your big fan";
channel.basicPublish("",QUEUE_NAME,null,msg.getBytes("UTF-8"));
System.out.print("send msg: "+msg);
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(channel!=null){
channel.close();
}
if(conn!=null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
下面是重点!!!
Sender类的路径E:\springboot\chapter1\src\main\java\com\example\chapter1\rabbitmq
打开一个dos命令行窗口,进入到Sender类的包所在的目录E:\springboot\chapter1\src\main\java进行编译,amqp-client-5.1.2.jar在RabbitMQ下载的,放到了E:\springboot\chapter1\src\main\java路径下,-cp amqp-client-5.1.2.jar表示引入Sender类要用到的依赖;-encoding utf-8 保证不乱码;下面是带包名的类,编译成功则什么也不会提示。
下面是执行,同样要引入jar包amqp-client-5.1.2.jar,还多了两个slf4j-api-1.7.21.jar和slf4j-simple-1.7.22.jar(这个官网有提到),到官网下载,放到E:\springboot\chapter1\src\main\java路径下,多个jar包用分号隔开,下面是带包名的类,成功输出信息。
注意:如果有多个jar包,最后一个一定要加分号,要不然会报如下错误:
错误: 找不到或无法加载主类 com.example.chapter1.rabbitmq.Receiver
上面的这个类既带有包,又有依赖,所以运行起来较为麻烦,
下面总结了其他三种情况,还是上面的例子:
1.带包无依赖jar包
编译:E:\springboot\chapter1\src\main\java>javac com/example/chapter1/rabbitmq/Sender.java
执行: E:\springboot\chapter1\src\main\java>java com/example/chapter1/rabbitmq/Sender2.不带包有依赖jar包
前提是去掉代码中的package com.example.chapter1.rabbitmq,这三个jar包放到E:\springboot\chapter1\src\main\java\com\example\chapter1\rabbitmq下
编译:E:\springboot\chapter1\src\main\java\com\example\chapter1\rabbitmq>javac -cp amqp-client-5.1.2.jar Sender.java
执行:E:\springboot\chapter1\src\main\java\com\example\chapter1\rabbitmq>java -cp amqp-client-5.1.2.jar;slf4j-api-1.7.21.jar;slf4j-simple-1.7.22.jar Sender
3.无包无依赖jar包
前提是去掉代码中的package com.example.chapter1.rabbitmq
编译:E:\springboot\chapter1\src\main\java\com\example\chapter1\rabbitmq>javac -cp Sender.java
执行: E:\springboot\chapter1\src\main\java\com\example\chapter1\rabbitmq>java Sender