RabbitMQ 学习 -->> 4、HelloWorld

本文详细介绍了如何使用Java和RabbitMQ实现一个简单的消息生产者,通过ConnectionBean配置参数,并展示如何创建消费者监听指定队列并打印接收到的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4、HelloWorld

使用 Java 和 RabbitMQ ,发送单个消息的生产者和接收消息并打印的消费者。

bean
public class ConnectionBean {

    private String host;
    private String username;
    private String password;
    private String queuename;
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getQueuename() {
        return queuename;
    }

    public void setQueuename(String queuename) {
        this.queuename = queuename;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
util
public class CommonUtil {

    public Channel getChannel(String host,
                              String username,
                              String password) throws IOException, TimeoutException {
        // 创建连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 设置IP地址
        connectionFactory.setHost(host);
        // 设置登陆用户名
        connectionFactory.setUsername(username);
        // 设置用户密码
        connectionFactory.setPassword(password);
        // channel 对象
        return connectionFactory.newConnection().createChannel();
    }

}
producer
public class Producer {

    private static ConnectionBean bean = new ConnectionBean();
    private static CommonUtil util = new CommonUtil();

    public static void main(String[] args) {

        try {

            bean.setQueuename("hello");
            bean.setHost("192.168.126.129");
            bean.setUsername("3aniuma");
            bean.setPassword("123456");
            bean.setMessage("hello world");

            Channel channel = util.getChannel(bean.getHost(),bean.getUsername(),bean.getPassword());
            /**
             * 生成一个队列
             *  参数
             *  1.队列名称
             *  2.队列里面的消息是否持久化 默认消息存储在内存中
             *  3.该队列是否只供一个消费者进行消费 是否进行共享 true 可以多个消费者消费
             *  4.是否自动删除 最后一个消费者端开连接以后 该队列是否自动删除 true 自动删除
             *  5.其他参数
             */
            channel.queueDeclare(bean.getQueuename(),false,false,false,null);

            /**
             * 发送一个消息
             *  1.发送到那个交换机
             *  2.路由的 key 是哪个
             *  3.其他的参数信息
             *  4.发送消息的消息体
             */
            channel.basicPublish("",bean.getQueuename(),null,bean.getMessage().getBytes());

            System.out.println("消息发送完毕!!");

        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }

    }

}
consume
public class Consume {

    public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionBean bean = new ConnectionBean();
        bean.setQueuename("hello");
        bean.setHost("192.168.126.129");
        bean.setUsername("3aniuma");
        bean.setPassword("123456");
        bean.setMessage("hello world");
        CommonUtil util = new CommonUtil();
        Channel channel = util.getChannel(bean.getHost(),bean.getUsername(),bean.getPassword());

        DeliverCallback deliverCallback = (consumerTag, delivery)->{
            String message = new String(delivery.getBody());
            System.out.println("message = " + message);
        };

        CancelCallback cancelCallback = consumerTag->{
            System.out.println("消息消费被中断");
        };

        channel.basicConsume(bean.getQueuename(),false,deliverCallback,cancelCallback);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值