RabbitMQ---HelloWord模型

provide

        

package HelloWord;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

/**
 * @ProjectName: MyRabbitMQ
 * @Package: HelloWord
 * @ClassName: Provider
 * @Author: zxh
 * @Description: 生产消息
 * @Date: 2022/1/12 10:51
 * @Version: 1.0
 */
public class Provider {

    @Test
    public void testSendMessage() throws IOException, TimeoutException {

        //创建连接mq的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitmq的主机
        connectionFactory.setHost("连接服务器地址");
        //设置端口号
        connectionFactory.setPort(5672);
        //设置连接哪个虚拟主机
        connectionFactory.setVirtualHost("虚拟主机名称");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("账户");
        connectionFactory.setPassword("密码");
        //获取连接对象
        Connection connection = connectionFactory.newConnection();
        //获取连接中的通道对象,一个通道可以向不同队列发送消息
        Channel channel = connection.createChannel();
        //通道绑定对应的消息队列
        //参数一:绑定队列,名称 如果不存在则自动创建
        //参数二:用来定义队列的特性是否要持久化。true为持久化,即当RabbitMQ服务关闭时,若此处为false,队列同时也会被销毁,消息是否被销毁,由设置决定
        //参数三:是否独占队列,即当前连接独占队列,true表示独占
        //参数四:是否在消费完成后自动删除队列,true,自动删除,即当消费者消费完消息关闭连接后,队列将被删除
        //参数五:额外参数
        channel.queueDeclare("hello", false, false, false, null);
        //发布消息
        //参数1:交换机名称
        //参数2:队列名称
        //参数3:传递消息额外设置,(MessageProperties.PERSISTENT_TEXT_PLAIN)持久化消息,不会随RabbitMQ重启而丢失
        //参数4:消息的具体内容
        channel.basicPublish("", "hello", null, "hello RabbitMQ".getBytes(StandardCharsets.UTF_8));
        //关闭
        channel.close();
        connection.close();
    }
}

consumer

        

package HelloWord;

import com.rabbitmq.client.*;
import org.junit.Test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @ProjectName: MyRabbitMQ
 * @Package: HelloWord
 * @ClassName: Customer
 * @Author: zxh
 * @Description: 消费消息
 * @Date: 2022/1/12 11:22
 * @Version: 1.0
 */
public class Consumer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //创建连接mq的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitmq的主机
        connectionFactory.setHost("连接服务器地址");
        //设置端口号
        connectionFactory.setPort(5672);
        //设置连接哪个虚拟主机
        connectionFactory.setVirtualHost("虚拟主机名称");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("账户");
        connectionFactory.setPassword("密码");
        //创建连接对象
        Connection connection = connectionFactory.newConnection();
        //创建通道
        Channel channel = connection.createChannel();
        //通道绑定对象(要与生产者的参数一致)
        channel.queueDeclare("hello",false,false,false,null);

        //消费消息
        //参数1:消费哪个队列的消息(队列名称)
        //参数2:开启消息的自动确认机制
        //参数3:消费时的回调接口
        channel.basicConsume("hello",true,new DefaultConsumer(channel){
            /*
            *  最后一个参数:消息队列中取出的消息
            * */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,AMQP.BasicProperties properties,byte[] bodys){
                System.out.println(new String(bodys));
            }
        });
        //channel.close();
        //connection.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值