RabbitMQ 学习 -->> 4、HelloWorld

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);
    }

}


版权声明:本文为m0_55668855原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。