一、建立与 RabbitMQ 的连接工具类 ConnectionUtil.class 。
1、创建一个 ConnectionFactory 连接工厂对象。
ConnectionFactory factory = new ConnectionFactory();
2、设置服务地址。
factory.setHost("192.168.37.138");
3、设置端口。
factory.setPort(5672);
4、设置账号信息、用户名、密码、虚拟主机(vhost)、设置超时时间(不然报错)
factory.setVirtualHost("/sfwu"); factory.setUsername("sfwu"); factory.setPassword("123456"); factory.setHandshakeTimeout(600000000);
5、通过连接工厂对象创建连接对象。
Connection connection = factory.newConnection();
6、返回连接对象。
return connection;
二、创建生产者类 Send.class 。
1、通过连接对象获取连接。
Connection connection = ConnectionUtil.getConnection();
2、从连接中创建通道,使用通道才能完成消息相关的操作。
Channel channel = connection.createChannel();
3、使用消息通道对象创建队列。
channel.queueDeclare("simple_queue", false, false, false, null);
4、定义消息内容。
String message = "Hello World!";
5、使用消息通道对象,向指定的队列中发送消息。
channel.basicPublish("","simple_queue", null, message.getBytes());
6、输出成功发送出去的消息内容。
System.out.println(" [发送成功] Sent '" + message + "'");
7、关闭通道和连接。
channel.close(); connection.close();
三、创建消费者类 Recv.class 。
1、通过工具类获取连接。
Connection connection = ConnectionUtil.getConnection();
2、通过连接对象创建通道。
Channel channel = connection.createChannel();
3、通过消息通道对象声明队列。
channel.queueDeclare("simple_queue", false, false, false, null);
4、定义队列里的消费者对象,并在对象中传入消息通道对象。
DefaultConsumer consumer = new DefaultConsumer(channel) { // 获取消息,并且处理,这个方法类似事件监听,如果有消息的时候,会被自动调用 @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body) throws IOException { // body 即消息体 String msg = new String(body); System.out.println(" [消费者] received : " + msg + "!"); } };
5、监听队列,第二个参数:是否自动进行消息确认。
channel.basicConsume("simple_queue", true, consumer);
标签:java,对象,factory,RabbitMQ,connection,应用,false,连接,channel From: https://www.cnblogs.com/sfwu/p/17034584.html