先需要引入相关的依赖文件
com.rabbitmq
amqp-client
3.6.5
上来就是干:
编写链接工具类
public class ConnectionUtil {
private static ConnectionFactory factory;
private static Channel channel;
public static final String QUEUE_NAME = "cloud_attacking_dream";
/*
* 单例模式机制获取连接通道
* */
public static Channel initConnetion() throws IOException, TimeoutException {
if (null == factory && null == channel) {
factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
//本机调用,用户密码省略
/*factory.setUsername();
factory.setPassword();*/
Connection connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
}
return channel;
}
}
服务端代码:
/**
* @author licunzhi
* @desc 服务端(生产者)
* @date 2018-07-20
*/
public class Server {
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
Channel channel = ConnectionUtil.initConnetion();
for (int i =0; i < 100; i++) {
String message = UUID.randomUUID().toString();
channel.basicPublish("", ConnectionUtil.QUEUE_NAME, null, message.getBytes("UTF-8"));
//定時發送消息 展示結果更加明顯
Thread.sleep(10000);
}
}
客户端代码
/**
* @author licunzhi
* @desc 客户端(消费者)
* @date 2018-07-20
*/
public class Client {
public static void main(String[] args) throws IOException, TimeoutException {
Channel channel = ConnectionUtil.initConnetion();
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
AMQP.BasicProperties properties, byte[] body)
throws IOException {
String message = new String(body, "UTF-8");
System.out.println("Customer Received '" + message + "'");
}
};
channel.basicConsume( ConnectionUtil.QUEUE_NAME, true, consumer);
}
}
运行项目查看结果展示:
如果这些看着还是不爽 还是不解的话 :没关系 我有代码给你玩:
最后欢迎大佬加群指点:589780530